0

MySQLクエリを取得します: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()関数が存在しないことを示しています。誰かがこのクエリを変更するのを手伝ってくれるでしょうか?

本当にありがとう!

4

2 に答える 2

1

MySQL(関数を持たないnewid())またはSQL Server(newid()関数を持ち、リンクした回答でも対象となる)を参照するかどうかは明確ではありません。

Postgres で UUID を生成する標準的な方法は、UUID contrib モジュールをインストールしてから、提供されている関数のいずれかを使用して UUID を生成することです。

http://www.postgresql.org/docs/current/static/uuid-ossp.html

モジュールはcreate extension "uuid-ossp"、スーパーユーザー (通常は postgres) として接続して実行することでインストールされます。

uuid-ossp.sql古いバージョンの PostgreSQL を使用している場合は、contrib フォルダー (PostgreSQL インストールの一部) からスクリプトを実行する必要があります。

于 2012-04-26T12:46:54.993 に答える
0

PostgreSQL は Microsoft SQL Server 関数に相当するものをサポートしていませんnewid()

必要に応じて実装する必要があります。

良い実装はここにあります

uuid-ossp Moduleも使用できますが、 試したことはありません。

于 2012-04-26T12:23:44.033 に答える