嘗試多個 SELECT 直到獲得結果的方法
搜尋表中的特定行可能涉及具有不同等級的多個條件精確。常見的方法是使用多個 SELECT 語句並提高精確度,直到找到匹配項,例如:
SELECT * FROM image WHERE name LIKE 'text' AND group_id = 10 LIMIT 1
SELECT * FROM image WHERE name LIKE 'text' LIMIT 1
SELECT * FROM image WHERE group_id = 10 LIMIT 1
是否有單一表達式解?
雖然不可能寫一個包含所有SELECT 語句的單一表達式,但可以使用UNION ALL 運算子組合多個將SELECT 語句放入一個查詢中:
SELECT * FROM image WHERE name = 'name105' AND group_id = 10 UNION ALL SELECT * FROM image WHERE name = 'name105' UNION ALL SELECT * FROM image WHERE group_id = 10 LIMIT 1;
此查詢有效地檢索與任何指定條件相符的第一行,並考慮快速執行的索引。
處理多個搜尋參數
對於具有多個搜尋參數的情況,可以透過為每個參數組合添加額外的 SELECT 語句來擴展 UNION ALL 方法。例如,如果搜尋具有特定名稱或群組ID 的圖像:
SELECT * FROM image WHERE name = 'name105' AND author = 'author10' UNION ALL SELECT * FROM image WHERE name = 'name105' UNION ALL SELECT * FROM image WHERE author = 'author10' LIMIT 1;
相關性注意事項
雖然此方法有效地結合了多個搜尋條件,但它確實不考慮相關性。在相關性至關重要的情況下,在應用 UNION ALL 之前可能需要在 SELECT 語句中進行額外的排序或篩選。
以上是如何有效率地組合多個SELECT語句來尋找符合的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!