0
我想運行這樣的查詢,所以我總是會得到20個結果,即使第一SELECT
聲明沒有足夠的數據來恢復10結果。使用ORDER BY RAND()在MySQL聯合查詢與獨立限陳述
(
SELECT t.column1, t.column2
FROM table t
WHERE t.status = 1
LIMIT 10
)
UNION
(
SELECT t.column1, t.column2
FROM table t
WHERE t.status = 2
LIMIT 20
)
LIMIT 20
但我則想ORDER BY RAND()
,並確保從第一SELECT
聲明所有可用的結果包含在最終結果集。
當我將ORDER BY RAND()
添加到此查詢的末尾時,它給我的結果集不包括來自第一個SELECT
的全部10個結果,我假設它是真正獲得30行,然後從30個隨機中選擇20個。
任何想法,將不勝感激。
這裏是爲我工作:
SELECT x.*
FROM ((
SELECT t.column1, t.column2
FROM table t
WHERE t.status = 1
LIMIT 10
)
UNION
(
SELECT t.column1, t.column2
FROM table t
WHERE t.status = 2
LIMIT 20
)
LIMIT 20) x
ORDER BY RAND
我覺得對我來說是在增加一個組周圍的一切外parentheis並把ORDER BY RAND()鍵快結束的時候選擇((SELECT ...)UNION(SELECT ...))令BY RAND – Chris