在我的MS SQL 2012数据库'医生'中,我有一张表'候选人'包含以下字段:
Id, name, email, specification, sub specification, work state, geo preferences
。
我试图进行如下查询:
SELECT from candidates
WHERE specification = 6, AND sub specification = 148,
AND geo preferences IN ('Main';'New York';'Vermont');
OR work state IN ('Main';'New York';'Vermont');`
我无法以应有的方式工作。如果我省略“工作状态”这一条款,它就可以了。但在再次添加之后,结果给出了错误的规范和子规范编号。
你可以帮我解决这个问题吗?
答案 0 :(得分:0)
and
的优先级高于or
,因此您的查询将被解释为:
SELECT *
FROM candidates
WHERE (specification = 6 AND
sub_specification = 148 AND
geo_preferences IN ('Main', 'New York', 'Vermont')) OR
work state IN ('Main', 'New York', 'Vermont')
为了使其按照您希望的方式工作,您可以在两个位置条件周围明确添加括号:
SELECT *
FROM candidates
WHERE specification = 6 AND
sub_specification = 148 AND
(geo_preferences IN ('Main', 'New York', 'Vermont') OR
work state IN ('Main', 'New York', 'Vermont'))