我想做这样的事情:
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.id=t2.id AND t1.field1=false
因此,我不希望t2
表中的数据显示t1
表中t1.field1=false
的记录。
这在ORACLE中是可能的,但在MS ACCESS中这是可能的吗?
修改:我收到了Syntax error in JOIN operation
和JOIN expression not supported
以及Invalid argument to function
。
Edit2:为了防止进一步的误解和“放入WHERE
条款”的评论。
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.id=t2.id
如果你在ORACLE中写下我的第一个SELECT
,你会看到这个(我必须在MS中这样做)。我想查看来自t1
表的所有记录,但我不想加入每条记录,而只是t1.f1=false
。您可以看到id=2
和id=5
的位置。
答案 0 :(得分:1)
如果要将过滤器应用于数据集,请尝试在查询中使用WHERE代替AND。
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.field1=False
答案 1 :(得分:1)
这个更简单的解决方案对我有用:
SELECT t2.*, falset1.c1
FROM t2 LEFT JOIN (SELECT t1.*
WHERE t1.f1=false) AS falset1
ON t2.id=falset1.id
基本上,您需要使用where
子句对需要常量的数据进行子集化,然后在left join
中使用该子集
答案 2 :(得分:0)
如果您首先拥有多个SELECT
,我设法使用多个SELECT
获得了所需的结果,这很恶心。
SELECT t1.*, a.c1
FROM t1 LEFT JOIN (SELECT t2.*
FROM t1 LEFT JOIN t2 ON t1.id = t2.id
WHERE t1.f1=false) AS a
ON t1.id=a.id