基本上是在尝试建立一个考勤系统
deleted
这里是H代表部门的负责人。
F表示教职员工
现在,当我运行此查询时,这也将获取具有CSE部门的结果,我现在只希望CIVIL dep。
我该如何解决?
答案 0 :(得分:10)
使用括号
SELECT * FROM user
WHERE (role='H' OR role='F')
AND department='CIVIL'
因为AND
的绑定(优先级)比OR
强。
没有括号,您的查询将是这样
SELECT * FROM user
WHERE role='H'
OR (role='F' AND department='CIVIL')
答案 1 :(得分:5)
您的查询存在布尔逻辑问题。它确实起作用,只是没有做您想要的。
最简单的解决方案是使用IN
:
SELECT *
FROM user
WHERE role IN ('H', 'F') AND department = 'CIVIL';
未来的建议是,如果您在同一AND
中有OR
和WHERE
,请使用括号。
答案 2 :(得分:1)
await cartaoReference.getDocuments()
您的查询在输出中返回了CSE部门,因为您没有在所需的位置使用括号。因此,此查询将返回role ='H'或 角色='F'和部门='CIVIL'
像下面这样简单地在查询中添加括号即可正常工作
SELECT * FROM user WHERE role='H' OR role='F' AND department='CIVIL'