我想做这样的事情:
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
的位置。
如果您想对数据集应用过滤器,请尝试在查询中使用 WHERE 代替 AND。
SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.field1=False
我设法用多个
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
这个更简单的解决方案对我有用:
SELECT t2.*, falset1.c1
FROM t2 LEFT JOIN (SELECT t1.*
WHERE t1.f1=false) AS falset1
ON t2.id=falset1.id
基本上,您可以使用
where
子句对需要常量的数据进行子集化,然后在 left join
中使用该子集
我有两点意见: