使用多个条件访问左连接

问题描述 投票:0回答:4

我想做这样的事情:

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
的位置。

sql ms-access left-join
4个回答
3
投票

如果您想对数据集应用过滤器,请尝试在查询中使用 WHERE 代替 AND。

SELECT t1.*, t2.* FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.field1=False


1
投票

我设法用多个

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


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

中使用该子集

0
投票

我有两点意见:

  1. FROM 子句是强制性的,但在上面的 (SELECT 中缺失。
  2. 我们从“t1 LEFT JOIN t2”开始,但最后一篇文章是相反的,即“t2 LEFT JOIN t1”,而 LEFT JOIN 不是对称的。 你能澄清一下吗?
© www.soinside.com 2019 - 2024. All rights reserved.