mysql选择顺序,其中多列是条件

carvr3hs  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(346)

我想做:

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

一定有更好的办法。实现这一点的最佳和最有效的查询是什么?

hpcdzsge

hpcdzsge1#

在mysql中,您可以按布尔表达式排序。我认为它们被转换为0和1,因此使用降序排序,您可以首先得到“true ish”值。这样,您就可以依次按三个表达式进行排序:

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都匹配,那么将首先返回该行。

相关问题