我想顯示兩條記錄。mysql查詢選擇一個特定行和另一個隨機行
對於例如 select * FROM users WHERE user_id = 5
。
現在我想另一行隨機用戶表,但與USER_ID選擇!= 5
是否有可能在一個單一的查詢做。我嘗試使用聯合所有,但我沒有得到兩個不同的行。
感謝
我想顯示兩條記錄。mysql查詢選擇一個特定行和另一個隨機行
對於例如 select * FROM users WHERE user_id = 5
。
現在我想另一行隨機用戶表,但與USER_ID選擇!= 5
是否有可能在一個單一的查詢做。我嘗試使用聯合所有,但我沒有得到兩個不同的行。
感謝
這對我工作得很好。第一個結果始終是ID 5的記錄,第二行是隨機的。請注意,如果不存在ID爲5的記錄,則兩行都是隨機的。
SELECT * FROM users ORDER BY (user_id = 5) DESC, RAND() LIMIT 0,2
試試這個
SELECT * FROM users WHERE user_id = 5 || user_id != 5 ORDER BY RAND() LIMIT 2
將不起作用:不一定給用戶ID 5作爲第一個結果 – 2010-10-18 10:50:04
啊,是你的權利:) – 2010-10-18 10:52:36
聯盟應該做的伎倆。你可能忘了LIMIT
。
(SELECT * FROM users WHERE user_id = 5 LIMIT 1)
UNION
(SELECT * FROM users WHERE user_id != 5 LIMIT 1)
試試這個:
SELECT * FROM users WHERE user_id=5
union all (
SELECT * FROM users WHERE user_id!=5
ORDER BY RAND() LIMIT 0,1)
這是正確的,一個沒有
UNION
+1 – Joony 2010-10-18 10:58:35謝謝佩卡。我試過你的查詢。它效果很好。 +1。如果我有條件怎麼辦?我可以在那裏使用它。例如SELECT * FROM users ORDER BY(now()BETWEEN start_date and end_date)DESC,RAND()LIMIT 0,2 ?? – noobcode 2010-10-18 11:10:57
@noobcode肯定,取決於你想要做什麼。隨機行不會被這種情況覆蓋 – 2010-10-18 11:12:45