2017-05-26 145 views
0

我使用此SQL查詢來創建對列唯一的新標識。我想很久以前我從另一個StackOverlow的帖子中得到了這個想法。但它不起作用,我不知道爲什麼。我將生成100-200個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

+0

是的,那就是票。簡單的錯誤,但我只是看不到它 –