我在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)
我的问题是我的查询有什么问题,特别是因为它与WHERE XXX或XXX有关?
其次,RIGHT JOIN语句是否与后续WHERE语句的结果有关。
第三,如果我不能将RIGHT JOIN和WHERE组合在一起,那么将条件应用于依赖于RIGHT JOIN的查询的最佳方法是什么?
感谢任何帮助!
答案 0 :(得分:6)
用AND替换你的OR
WHERE (Table1.ColumnF <>28) AND (Table1.ColumnF<>29)
答案 1 :(得分:3)
您可以改用:
WHERE Table1.ColumnF Not In (28,29)
这种方法清楚而简明地表达了你的意图。既然您已针对OR
条件解决了AND
与WHERE
的问题,那么此建议可能似乎没有用处。但是,请记住,当你有更多这样的条件时。 {4} {}比Not In (28,29,32,40,119)
更容易编写和理解。