我有一个类似的查询。
SELECT *
FROM <database1>
WHERE (Condition1) AND (Condition2 or Condition3)
我想要的结果应该是满足条件1 和满足条件2或条件3的行。
但是SQL给了我满足条件1的行。似乎condition2和condition3之间的'OR'运算符正在做某事。
寻求专家意见。在此先感谢您的帮助。
答案 0 :(得分:4)
在评论中你提出:
SELECT *
FROM <Database>
WHERE
(
( [Title] Like '*Term1*'
OR [Title] = ''
OR [Title] = ''
OR [Title] = ''
OR [Title] = ''
OR [Title] = ''
OR [Title] = ''
OR [Title] = ''
OR [Title] = ''
OR [Title] = ''
)
and
(
( [Title] LIKE '*Term1*'
OR '*Term3*'
OR '*Indonesia*'
or [Country] IN ('*India*','*Indonesia*')
)
)
)
这样放置你可以看到结构更容易。
可能会让你失望的最重要的事情是第二部分中LIKE
,OR
和IN
运营商的混合。
LIKE
是唯一可以处理通配符的运算符,OR
和IN
不能。
你可能意味着:
( [Title] LIKE '*Term1*'
OR [Title] LIKE '*Term3*'
OR [Title] LIKE '*Indonesia*'
OR [Country] LIKE '*India*'
OR [Country] LIKE '*Indonesia*'
)
代替。
答案 1 :(得分:0)
我不确定,但试试这个:
SELECT * FROM <database1> WHERE ((Condition1) AND (Condition2 or Condition3))
希望这能解决你的问题:)
答案 2 :(得分:0)
IN
中没有使用通配符:
[Country] IN ('*India*','*Indonesia*')
并不代表您认为的含义