我问过关于前一个线程中多行的问题,但现在我需要知道单个行。这是一个例子查询:MySQL - 如何查询一个值,但默认为另一个值?
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
请问或语句的顺序尝试找到任何一行5的值,如果找到那么将停止并返回行?如果找不到,然后查找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的值?
你想要什么,如果两行被发现发生的呢? –
@伊格雷戈里无论选择什么。因此,如果选择从数据库查看记录的人的值为5,但没有记录的值为5,那么我希望它默认加载值为1. – John
如果要选择“这个'有多个值?你是动态创建你的语句还是在程序中? – Ben