我从以下位置获取 MySQL 查询:Biased random in SQL?但不幸的是它不适用于 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() 函数不存在。有人可以帮我修改这个查询吗?
非常感谢!
最佳答案
不清楚您是指 MySQL(它没有 newid()
函数)还是 SQL Server(它有 newid()
函数,并且也是您链接到的答案中的目标)。
在 Postgres 中生成 UUID 的标准方法是安装 UUID contrib 模块,然后使用提供的函数之一生成 UUID:
http://www.postgresql.org/docs/current/static/uuid-ossp.html
该模块是通过在以 super 用户(通常是 postgres)连接时运行create extension "uuid-ossp"
来安装的。
如果您使用的是较旧版本的 PostgreSQL,则需要从 contrib 文件夹(这是 PostgreSQL 安装的一部分)运行脚本 uuid-ossp.sql
关于mysql - 修改 MySQL 查询以与 PostgreSQL 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10333212/