构造此查询的正确方法是什么?

时间:2015-10-18 18:23:04

标签: sql-server

在我的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');`

我无法以应有的方式工作。如果我省略“工作状态”这一条款,它就可以了。但在再次添加之后,结果给出了错误的规范和子规范编号。

你可以帮我解决这个问题吗?

1 个答案:

答案 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'))