【问题标题】:MS Access SQL Not Working as desiredMS Access SQL 无法正常工作
【发布时间】:2011-12-08 11:55:14
【问题描述】:

我有一个这样的查询。

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

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

但是 SQL 给出的行只是满足条件 1。似乎条件2和条件3之间的'OR'运算符正在做一些事情。

寻求专家意见。提前感谢您的帮助。

【问题讨论】:

  • 能否提供示例数据以及实际查询?可能有一些不正确的语法导致问题
  • 你确定加粗的“AND”不应该是 OR 吗?这意味着您想要任何苹果或任何蔬菜或肉类,或者您真的想要任何不会产生结果的苹果和蔬菜或肉类。
  • 查看示例 sql。它完全一样,但对于真实姓名.. SELECT * FROM &lt;Database&gt; 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*')) ) )
  • 嗨,Qbert,这样想……条件 2 和条件 3 是条件 1 的子集。假设有 10 行满足条件 1,那么它应该检查这 10 行中有多少行满足条件 2 或条件 3。如果我的逻辑首先有缺陷,请告诉我。谢谢你的回复。。
  • @user1087661:您有一个重复多次的[Title] = ''。为什么?请通过编辑问题而不是在 cmets 中添加您的查询。

标签: sql ms-access


【解决方案1】:

在您的评论中:

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

改为。

【讨论】:

    【解决方案2】:

    我不确定,但是试试这个:

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

    希望这能解决你的问题:)

    【讨论】:

      【解决方案3】:

      IN 中不使用通配符:

      [Country] IN ('*India*','*Indonesia*')
      

      并不是你想的那样

      【讨论】:

        猜你喜欢
        • 2018-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-28
        相关资源
        最近更新 更多