MS Access SQL无法按预期工作

时间:2011-12-08 11:55:15

标签: sql ms-access

我有一个类似的查询。

SELECT * FROM <database1> WHERE (Condition1) AND (Condition2 or Condition3)

我想要的结果应该是满足条件1 满足条件2或条件3的行。

但是SQL给了我满足条件1的行。似乎condition2和condition3之间的'OR'运算符正在做某事。

寻求专家意见。在此先感谢您的帮助。

3 个答案:

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

这样放置你可以看到结构更容易。

可能会让你失望的最重要的事情是第二部分中LIKEORIN运营商的混合。

LIKE是唯一可以处理通配符的运算符,ORIN不能。

你可能意味着:

            (   [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*')

并不代表您认为的含义