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

jac*_*rge 1 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)
Run Code Online (Sandbox Code Playgroud)
  1. 尝试使用和不使用括号
  2. 当我只有一个where语句时,262条记录下降到160条记录,正如预期的那样
  3. 当我通过OR连接两个条件时,记录会回到262,显然没有达到预期的效果.即使只是第一个条件,我也不应该回到最多262条记录.

我的问题是我的查询有什么问题,特别是因为它涉及WHERE XXX或XXX?

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

第三,如果我不能合并右连接和WHERE,什么是应用条件,依赖于右连接查询的最佳方法是什么?

感谢任何帮助!

Jas*_*son 6

用AND替换你的OR

 WHERE (Table1.ColumnF <>28) AND (Table1.ColumnF<>29) 
Run Code Online (Sandbox Code Playgroud)

  • @jacobronniegeorge如果ColumnF是28,那么你的WHERE子句减少到`(28 <> 28)OR(28 <> 29)`,它减少为`(FALSE)OR(TRUE)`,这是真的.因此,WHERE子句不会消除任何行 (2认同)