我有以下表:這些SQL語句是否相同?
| sample_id (varchar, unique) | field1 (int) | field2 (int) | ...
--------------------------------------------------------------------
| 9b7acb476c4ab04c7ddbc | 100 | 56 | ...
| a2e4df67e98ccaf088abf | 23 | NULL | ...
| fcbe9cecd6b96cba7c6ee | NULL | 43 | ...
...
我具有由先前的用戶創建的同時查詢兩個字段和下面的代碼得到各行的隨機子集:
SELECT sample_id, field1, field2
FROM samples
WHERE field1 != NULL
UNION ALL
SELECT sample_id, field1, field2
FROM samples
WHERE field2 != NULL
ORDER BY RAND()
LIMIT 1000
我通過重寫查詢作爲以爲優化代碼:基於一些文檔我讀here
SELECT sample_id, field1, field2
FROM samples
WHERE field1 != NULL
OR field2 != NULL
ORDER BY RAND()
LIMIT 1000
似乎都查詢是等效的,但我不知道如何在查詢中處理ORDER BY RAND()
行。它僅適用於第二個查詢(即UNION ALL
之後的查詢)嗎?
原始查詢中的ORDER_BY RAND()行只應用於第二個select語句還是兩者? –
@SyafiqKamarulAzman。 。 。如在原始查詢中一樣,它適用於兩者。這就是原始查詢的工作原理,所以應該是答案的作用。 –