我在上一个线程中询问了有关多行的问题,但现在我需要了解单行。这是一个示例查询:
SELECT * FROM table1 WHERE this = 5 LIMIT 1
但是如果没有找到行,那么我会找到具有不同值的记录:
SELECT * FROM table1 WHERE this = 1 LIMIT 1
所以我想要的是,找到一个值为 5 的行,如果没有找到,则默认找到一个值为 1 的行。我如何在单个查询中做到这一点?OR 语句会这样工作吗?
SELECT * FROM table1 WHERE this = 5 OR this = 1 LIMIT 1
OR 语句的顺序是否会尝试查找任何值为 5 的行,如果找到,它将停止并返回该行?IF not found 然后查找 1 然后返回该行?如果没有,那么我如何使用单个查询来执行此操作,它会搜索一个值,如果未找到则默认查找另一个值?
我在想这个查询:
SELECT * FROM table1 WHERE this IN(5,1) ORDER BY this ASC LIMIT 1
但是,如果找到两个值,此查询将始终返回值为 1 对吗?所以我尝试了这个:
SELECT * FROM table1 WHERE this IN(5,1) ORDER BY this DESC LIMIT 1
但是,如果发现两行都正确,这将始终返回 5 的值?