返回多個數據mysql sql奇怪的問題?
爲什麼?
MySQL的SQL:
select * from t_book where id=(select round(max(id)*rand()) from t_book)
返回多個數據mysql sql奇怪的問題?
爲什麼?
MySQL的SQL:
select * from t_book where id=(select round(max(id)*rand()) from t_book)
正如所建議的,你可能有重複的ID值@Tarek。要找出你可以運行此查詢:
SELECT id, COUNT(*) c FROM t_book GROUP BY id HAVING c > 1;
在假設「ID」是一個唯一的主鍵值,它不應該返回多個值。在返回值中,所有「id」字段是否匹配,還是返回多個不同的ID?
問題不在於您的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個結果記錄。
你有一個語法錯誤,
函數round採取以下形式:
ROUND(N,[d]);
id不是唯一的 – Tarek
對簡短點和困惑。你想解釋一下你試圖獲得樣本數據嗎? –