mysql - 修改 MySQL 查询以与 PostgreSQL 一起使用

标签 mysql postgresql

我从以下位置获取 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/

相关文章:

sql-server - 从 PostgreSQL 查询 SQL Server

php - 将 SQL 查询转换为 codeigniter 事件记录

找不到 MySQL 文件或目录 ODBC

sql - 根据与同一 View 中其他行的比较来选择行

sql - 一个值出现的次数(sql)

java - 使用枚举与 boolean 值?

postgresql - Postgres 使用字符串中的枚举更新列

javascript - 我想从mysql的connection.query中取出结果并将其保存在nodejs的全局作用域链中

php - 如何在jQuery验证后向mysql表中插入数据

php - mysql_real_escape_string 不够好?