我想做:
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
一定有更好的办法。实现这一点的最佳和最有效的查询是什么?
1条答案
按热度按时间hpcdzsge1#
在mysql中,您可以按布尔表达式排序。我认为它们被转换为0和1,因此使用降序排序,您可以首先得到“true ish”值。这样,您就可以依次按三个表达式进行排序:
这甚至比单独的查询更进一步,因为如果有一行与所有三个id都匹配,那么将首先返回该行。