Mysql

如何在優先查詢中使用 OR?

  • October 25, 2017

在一個簡單的查詢中

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就是這種情況)這應該不是問題)

引用自:https://dba.stackexchange.com/questions/49416