Sql 和或周围的括号
我需要一些帮助,以确保在SQL SERVER中正确使用括号括住AND或语句Sql 和或周围的括号,sql,sql-server,parentheses,Sql,Sql Server,Parentheses,我需要一些帮助,以确保在SQL SERVER中正确使用括号括住AND或语句 SELECT DISTINCT * FROM Table WHERE yearmonth = 201404 AND (HasA = 1 OR HasB = 1 OR hasC = 1) AND (HasAX = 10 OR HasBX = 10 OR HasCX = 10) 当我的第二行代码上面有括号时,它还会提取其他值,比如HasCX=23 具有讽刺意味的是,这一行代码运行良好: AND (HasA = 1 OR
SELECT DISTINCT *
FROM Table
WHERE yearmonth = 201404
AND (HasA = 1 OR HasB = 1 OR hasC = 1)
AND (HasAX = 10 OR HasBX = 10 OR HasCX = 10)
当我的第二行代码上面有括号时,它还会提取其他值,比如HasCX=23
具有讽刺意味的是,这一行代码运行良好:
AND (HasA = 1 OR HasB = 1 OR hasC = 1)
我应该如何写我的括号围绕这个
AND (HasAX = 10 OR HasBX = 10 OR HasCX = 10)
它应该只提取满足条件10的数据。我认为您的查询是正确的。检查您的数据。一行可以有HasCx=23,但也可以有HasBX=1 首先,对于您的查询,编写逻辑的更简洁方法是在中使用
:
SELECT DISTINCT *
FROM Table
WHERE yearmonth = 201404 AND
1 IN (HasA, HasB, HasC) AND
10 IN (HasAX, HasBX, HaxCX)
我怀疑你真正想要的是:
WHERE yearmonth = 201404 AND
((HasA = 1 AND HasAZ = 10) OR
(HasB = 1 AND HasBZ = 10) OR
(HasC = 1 AND HasCZ = 10)
)
或者,您可能希望所有这些都通过和连接,而不是或((HasA=1或HasB=1或hasC=1)和(HasAX=10或HasBX=10或HasCX=10))连接HasAX和HasBX
中对于HasCX=23
的值是什么?规则是:不带括号,这个问题可能会更清楚,有了一些样本数据和您的预期结果(包括一些当前在您给定的尝试中无法正常工作的样本数据)@dataaddicted,您能描述一下您想从数据库中提取什么吗?谢谢,但它仍然提供我的其他产品。让我解释一下。我有HasA或HasB或HasC作为吸引拥有其中一种产品的客户的方法。我不能在每个HasA、HasB和HasC之后使用和,因为它将吸引所有拥有这三种产品的客户。选择HasAZ和so是因为他们必须在一个特定的平台上,比如说光纤。即使有了你的代码,它仍然在挑选coax。