我从Biased random in SQL?获得MySQL查询,但遗憾的是它无法与PostgreSQL一起使用:
DECLARE @sample TABLE (id int, boost int)
INSERT @sample VALUES (1, 1), (2, 2), (3, 7)
SELECT
RAND(CHECKSUM(NEWID())) * boost AS weighted,
SUM(boost) OVER () AS boostcount,
id
FROM
@sample
GROUP BY
id, boost
ORDER BY
weighted DESC
它表示NEWID()函数不存在。有人可以帮我解决这个疑问吗?
非常感谢!
答案 0 :(得分:1)
目前尚不清楚您是否引用了MySQL(没有newid()
函数)或SQL Server(它具有newid()
函数,并且也是您链接到的答案的目标)。
在Postgres中生成UUID的标准方法是安装UUID contrib模块,然后使用其中一个提供的函数生成UUID:
http://www.postgresql.org/docs/current/static/uuid-ossp.html
通过以超级用户(通常是postgres)连接的方式运行create extension "uuid-ossp"
来安装模块。
如果您使用的是旧版本的PostgreSQL,则需要从contrib文件夹(这是PostgreSQL安装的一部分)运行脚本uuid-ossp.sql
答案 1 :(得分:0)
PostgreSQL不支持等效于Microsoft SQL Server函数newid()
如果你愿意,你必须实施。
可以找到一个好的实现HERE
您也可以使用uuid-ossp Module,但我从未尝试过。