两条查询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 链接的,程序是不是从左到右这样一个一个匹配

阅读 924
1 个回答
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,除非用括号括起来

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进