为什么此查询无法正常工作?

时间:2018-08-20 16:46:12

标签: php sql

基本上是在尝试建立一个考勤系统

deleted

这里是H代表部门的负责人。
F表示教职员工

现在,当我运行此查询时,这也将获取具有CSE部门的结果,我现在只希望CIVIL dep。

我该如何解决?

3 个答案:

答案 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中有ORWHERE,请使用括号。

答案 2 :(得分:1)

 await cartaoReference.getDocuments()

您的查询在输出中返回了CSE部门,因为您没有在所需的位置使用括号。因此,此查询将返回role ='H'或 角色='F'和部门='CIVIL'

像下面这样简单地在查询中添加括号即可正常工作

SELECT * FROM user WHERE role='H' OR role='F' AND department='CIVIL'