两条查询SQL能不能合成一条?

作者站长头像
站长
· 阅读数 4
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个回答
avatar
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,除非用括号括起来

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容