2015-10-18 119 views
2

在我的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

那么在列表中应该有,作为分隔符,不应该有;在或之前,状态被称为缅因州和@Mureinik说,你应该添加()来修复逻辑 –

回答

0

andor更高的优先级,让你的查询将被解释为:

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')) 
+0

非常感谢你。现在它工作正常。 – corver40

相关问题