为什么这个查询不能正常工作?

Him*_*ahi -1 php sql

基本上我正试图建立一个制度

$query = "SELECT * FROM user WHERE role='H' OR role='F' AND department='CIVIL'";
Run Code Online (Sandbox Code Playgroud)

这是H mean的负责人.
和F意味着教师

现在,当我运行此查询时,这也会获取具有CSE部门的结果,现在我只想要CIVIL dep.

我怎么解决这个?

jue*_*n d 10

使用括号

SELECT * FROM user 
WHERE (role='H' OR role='F')
AND department='CIVIL'
Run Code Online (Sandbox Code Playgroud)

因为AND它具有更强的绑定(优先级)OR.

如果没有括号,您的查询将是这样的

SELECT * FROM user 
WHERE role='H' 
OR (role='F' AND department='CIVIL')
Run Code Online (Sandbox Code Playgroud)


Gor*_*off 5

您的查询有一个布尔逻辑问题.它确实有效,它不会做你想要的.

最简单的解决方案是使用IN:

SELECT *
FROM user
WHERE role IN ('H', 'F') AND department = 'CIVIL';
Run Code Online (Sandbox Code Playgroud)

对未来的建议是,如果你有AND和OR相同WHERE,那么使用括号.