2017-05-10 92 views
-1

返回多個數據mysql sql奇怪的問題?

爲什麼?

MySQL的SQL:

select * from t_book where id=(select round(max(id)*rand()) from t_book) 
+3

id不是唯一的 – Tarek

+1

對簡短點和困惑。你想解釋一下你試圖獲得樣本數據嗎? –

回答

0

正如所建議的,你可能有重複的ID值@Tarek。要找出你可以運行此查詢:

SELECT id, COUNT(*) c FROM t_book GROUP BY id HAVING c > 1; 
0

在假設「ID」是一個唯一的主鍵值,它不應該返回多個值。在返回值中,所有「id」字段是否匹配,還是返回多個不同的ID?

0

問題不在於您的id列的唯一性。

select round(max(id)*rand()) from t_book 

這將返回不同數量的ids,至少在MySQL 5.6中。我不知道爲什麼,但這真的很奇怪。

你可以試試這個,從您的表中選擇一個隨機記錄:

select * from t_book order by rand() limit 1; 

如果你堅持這一輪-MAX隨機方法,記住這一輪可以返回0也是一樣,這是不可能的你有一個0 ID。


首先我以爲這是由重複的id值造成的。你可以試試這個小提琴,看看會發生什麼:http://sqlfiddle.com/#!9/7fc510/1。 對於多次運行,我獲得了0,1或2個結果記錄。

0

你有一個語法錯誤,
函數round採取以下形式:

ROUND(N,[d]);