組合多個SELECT 語句而不丟棄結果
在資料庫查詢最佳化領域,我們經常遇到需要將多個SELECT 語句組合成單一查詢。然而,如所提供的範例所示,對每個單獨的 SELECT 語句應用 LIMIT 子句以將其結果限制為單行可能會導致資料遺失。
要解決此問題,我們需要確保單獨的 SELECT語句括在括號內。透過這樣做,我們使查詢語法更加明確,並防止 LIMIT 子句應用於整體查詢結果。
修改後的查詢應如下所示:
(SELECT result FROM foo.table LIMIT 1) UNION ALL (SELECT result FROM bar.table LIMIT 1) UNION ALL (SELECT result FROM doo.table LIMIT 1)
In在這個修改後的查詢中,每個單獨的子語句都包含在括號內,確保LIMIT 子句僅應用於其各自的子查詢。因此,所有傳回的行都將被保留,提供所需的單列結果,其中多行代表不同的模式名稱。
需要注意的是,MySQL 手冊明確指出:
「select_statement 是任何不帶ORDER BY、LIMIT、FOR UPDATE 或FOR SHARE 子句的SELECT 語句。(ORDER BY 和LIMIT 可以附加到子表達式,如果它是如果沒有括號,這些子句將應用於UNION的結果,而不是其右側的輸入表達式。
以上是如何將多個 SELECT 語句與 LIMIT 子句組合在一起而不遺失結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!