2017-05-26 4 views
0

このSQLクエリを使用して、列に固有の新しいIDを作成します。私はずっと前に別のStackOverlow投稿からアイデアを得たと思う。しかし、それは動作しません、なぜ私は確信していません。私は100-200のIDを生成します(データベースをそれぞれデータベースに追加します)。私は時には重複してしまいます。オンザフライで一意のIDを生成する

このクエリではっきりしないことはありますか?

SELECT FLOOR(RAND() * 99999) AS random_num 
FROM listings 
WHERE 'random_num' NOT IN (SELECT identifier FROM listings) 
LIMIT 1 
+0

なぜあなただ​​けの自動インクリメントフィールドを使用することはできませんか? – maSTAShuFu

+0

次の行を簡単に推測できるようにしたくない状況です。 –

答えて

0

私はあなたが意図だと思う:

SELECT l.* 
FROM (SELECT FLOOR(RAND() * 99999) AS random_num 
     FROM listings l 
    ) l 
WHERE random_num NOT IN (SELECT identifier FROM listings) 
LIMIT 1 

あなたのコードは、文字列や数値識別子と一致することはほとんどありません'random_num'を持っています。

auto_incrementとしてください。 PostgreSQLの

+0

これはチケットです。簡単な間違いですが、私はそれを見ることができませんでした –

関連する問題