访问 - 在哪里和/或不工作

时间:2012-10-12 13:19:42

标签: sql ms-access select join where-clause

我在MS Access中编写了以下查询

SELECT DISTINCT Table1.ColumnA, Table1.ColumnB,Table1.ColumnC,Table1.ColumnD,Table1.ColumnE
FROM Table2 
RIGHT JOIN Table1 ON (Table2.ColumnB = Table1.ColumnF) 
WHERE (Table1.ColumnF <>28) OR (Table1.ColumnF<>29)
  1. 尝试使用和不使用圆括号
  2. 当我只有一个where语句时,262条记录按预期下降到160条记录
  3. 当我通过OR连接两个条件时,记录会回到262,显然没有达到预期的效果。即使只是第一个条件,我也不应该回到最多262条记录。
  4. 我的问题是我的查询有什么问题,特别是因为它与WHERE XXX或XXX有关?

    其次,RIGHT JOIN语句是否与后续WHERE语句的结果有关。

    第三,如果我不能将RIGHT JOIN和WHERE组合在一起,那么将条件应用于依赖于RIGHT JOIN的查询的最佳方法是什么?

    感谢任何帮助!

2 个答案:

答案 0 :(得分:6)

用AND替换你的OR

 WHERE (Table1.ColumnF <>28) AND (Table1.ColumnF<>29) 

答案 1 :(得分:3)

您可以改用:

WHERE Table1.ColumnF Not In (28,29)

这种方法清楚而简明地表达了你的意图。既然您已针对OR条件解决了ANDWHERE的问题,那么此建议可能似乎没有用处。但是,请记住,当你有更多这样的条件时。 {4} {}比Not In (28,29,32,40,119)更容易编写和理解。