两条查询SQL能不能合成一条?
SELECT * FROM t WHERE active = 1 AND enabled = 1 DESC LIMIT 0, 1
SELECT * FROM t WHERE enabled = 1 DESC LIMIT 0, 1
这两个条sql
能不能合并成一条,其实就是想 如果 active = 1
没有的,就随便找一个作为默认
现在就是两条sql
,如果不存在,需要判断,然后再次查询,我想每次查询至少有一条数据,除非表为空
还有,用 AND
链接的,程序是不是从左到右这样一个一个匹配
回复
1个回答
test
2024-06-24
SELECT * FROM (
SELECT * FROM t WHERE active = 1 AND enabled = 1
UNION ALL
SELECT * FROM t WHERE enabled = 1
) AS temp
ORDER BY (CASE WHEN active = 1 THEN 0 ELSE 1 END)
LIMIT 1
用 AND 链接的,程序是不是从左到右这样一个一个匹配?
是的,顺序优先级是not>and>or,除非用括号括起来
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容