簡體   English   中英

條件多列的MySQL選擇順序

[英]MySQL selection order where multiple columns are conditions

我想要做:

SELECT * FROM table WHERE id1 = '123' OR id2= '456' OR id3 = '789' LIMIT 1;

可能有多個匹配項,如果是這種情況,我希望先返回id1的匹配項,然后再返回id2的匹配項,然后再返回id3的匹配項。

我知道我可以通過3個查詢來完成此操作,例如:

SELECT * FROM table WHERE id1 = '123' LIMIT 1

如果沒有匹配項,則:

SELECT * FROM table WHERE id2 = '456' LIMIT 1

如果沒有匹配項,則:

SELECT * FROM table WHERE id3 = '789' LIMIT 1

一定會有更好的辦法。 什么是最好和最有效的查詢來完成此任務?

在MySQL中,您可以按布爾表達式排序。 我認為它們被轉換為0和1,因此使用降序排序,您可以首先獲得“真實值”值。 這樣,您就可以依次對這三個表達式進行排序:

SELECT * FROM table 
WHERE id1 = '123' OR id2= '456' OR id3 = '789' 
ORDER BY 
  id1 = '123' DESC,
  id2 = '456' DESC, 
  id3 = '789' DESC 
LIMIT 1;

這甚至比單獨的查詢要走得更遠,因為如果有一行匹配所有三個id,則將首先返回該行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM