Mysql
如何在優先查詢中使用 OR?
在一個簡單的查詢中
SELECT * FROM table WHERE id='x' OR id='y'
如何優先獲得僅其中一個
WHERE
子句?我的意思是用
id='x'
. 僅當沒有行時,才使用id='y'
.換句話說,
id='y'
如果 有一行,則不要使用id='x'
。
SELECT * FROM table WHERE id IN ('x', 'y') AND (id='x' OR NOT EXISTS(SELECT id FROM table WHERE id='x'))
應該做的伎倆(警告:我是一個 MSSQL 人,並沒有在 mySQL 中嘗試過,但我懷疑那裡的語法也可以接受)雖然效率將取決於有多少行匹配第一個過濾子句(對於與
id='x' OR id='y'
該部分中的子查詢匹配的每一行,EXISTS
除非查詢計劃器足夠聰明,可以看到它不依賴於外部查詢中的任何內容,因此可以執行一次並重用結果 - 如果您只期望最多兩個(我懷疑的列名id
就是這種情況)這應該不是問題)