SQL left join-and after on子句不起作用

SQL left join-and after on子句不起作用,sql,sql-server,Sql,Sql Server,我在SQL的左连接中有一个场景,它没有生成我所需要的输出。以下是表格形式的描述和我尝试过的查询 表A A_ID // PK OF TABLE A IS_ACTIVE // VALUE=1 OR 0 A_ID IS_ACTIVE 1 1 2 0 3 1 4 0 5 0 表B B_ID // PK OF TABLE B A_ID // FK OF TABLE A IN TABLE B

我在SQL的左连接中有一个场景,它没有生成我所需要的输出。以下是表格形式的描述和我尝试过的查询

表A

A_ID        // PK OF TABLE A
IS_ACTIVE   // VALUE=1 OR 0
A_ID    IS_ACTIVE
1       1
2       0
3       1
4       0
5       0
表B

B_ID        // PK OF TABLE B
A_ID        // FK OF TABLE A IN TABLE B
B_ID    A_ID
1       1
2       1
3       4
4       4
5       4
6       4   
表A的样本记录

A_ID        // PK OF TABLE A
IS_ACTIVE   // VALUE=1 OR 0
A_ID    IS_ACTIVE
1       1
2       0
3       1
4       0
5       0
表B的样本记录

B_ID        // PK OF TABLE B
A_ID        // FK OF TABLE A IN TABLE B
B_ID    A_ID
1       1
2       1
3       4
4       4
5       4
6       4   
从A.A\u ID=B.A\u ID上的左连接B中选择*

从A.A\u ID=B.A\u ID和A.IS\u ACTIVE=0的左侧连接B中选择*

以下输出是上述查询的实际输出,通过添加对记录没有影响,并且在ON子句之后是活跃的=0

A_ID    IS_ACTIVE   B_ID    A_ID
1       1           1        1
1       1           2        1
2       0           NULL    NULL
3       1           NULL    NULL
4       0           3       4
4       0           4       4
4       0           5       4
4       0           6       4
5       0           NULL    NULL
以下输出是解决问题所需的所需输出

A_ID    IS_ACTIVE   B_ID    A_ID
1       1           NULL    NULL
1       1           NULL    NULL
2       0           NULL    NULL
3       1           NULL    NULL
4       0           3       4
4       0           4       4
4       0           5       4
4       0           6       4
5       0           NULL    NULL
我在获取所需的准确记录方面遇到了问题。 我需要表A中的所有记录和表B中的匹配记录,但是 表B中的那些记录等于表A中的is_active=0

注意:查询应显示表A的所有记录

请帮助我如何在SQL的左联接中获得此方案。

您是否尝试过:

Select * from A left join B on A.A_ID=B.A_ID 
Where A.IS_ACTIVE=0
您是否尝试过:

Select * from A left join B on A.A_ID=B.A_ID 
Where A.IS_ACTIVE=0
您是否尝试过:

Select * from A left join B on A.A_ID=B.A_ID 
Where A.IS_ACTIVE=0
您是否尝试过:

Select * from A left join B on A.A_ID=B.A_ID 
Where A.IS_ACTIVE=0

我试着用你的例子作为代码。我得到了你需要的结果。有什么问题

CREATE TABLE #a(a_id int, is_active bit)
CREATE TABLE #b(b_id int, a_id int)

INSERT INTO #a(a_id,is_active)
VALUES(1,1),(2,0),(3,1),(4,0),(5,0)

INSERT INTO #b(b_id,a_id)
VALUES(1,1),(2,1),(3,4),(4,4),(5,4),(6,4)

SELECT * 
FROM #a as a
LEFT JOIN #b as b
        ON a.a_id = b.a_id
        AND a.is_active = 0

DROP TABLE #a
DROP TABLE #b

我试着用你的例子作为代码。我得到了你需要的结果。有什么问题

CREATE TABLE #a(a_id int, is_active bit)
CREATE TABLE #b(b_id int, a_id int)

INSERT INTO #a(a_id,is_active)
VALUES(1,1),(2,0),(3,1),(4,0),(5,0)

INSERT INTO #b(b_id,a_id)
VALUES(1,1),(2,1),(3,4),(4,4),(5,4),(6,4)

SELECT * 
FROM #a as a
LEFT JOIN #b as b
        ON a.a_id = b.a_id
        AND a.is_active = 0

DROP TABLE #a
DROP TABLE #b

我试着用你的例子作为代码。我得到了你需要的结果。有什么问题

CREATE TABLE #a(a_id int, is_active bit)
CREATE TABLE #b(b_id int, a_id int)

INSERT INTO #a(a_id,is_active)
VALUES(1,1),(2,0),(3,1),(4,0),(5,0)

INSERT INTO #b(b_id,a_id)
VALUES(1,1),(2,1),(3,4),(4,4),(5,4),(6,4)

SELECT * 
FROM #a as a
LEFT JOIN #b as b
        ON a.a_id = b.a_id
        AND a.is_active = 0

DROP TABLE #a
DROP TABLE #b

我试着用你的例子作为代码。我得到了你需要的结果。有什么问题

CREATE TABLE #a(a_id int, is_active bit)
CREATE TABLE #b(b_id int, a_id int)

INSERT INTO #a(a_id,is_active)
VALUES(1,1),(2,0),(3,1),(4,0),(5,0)

INSERT INTO #b(b_id,a_id)
VALUES(1,1),(2,1),(3,4),(4,4),(5,4),(6,4)

SELECT * 
FROM #a as a
LEFT JOIN #b as b
        ON a.a_id = b.a_id
        AND a.is_active = 0

DROP TABLE #a
DROP TABLE #b



@杰里米。你看过问题了吗?在on子句中,在他的select语句中没有where子句……我没有使用where子句。我也用过clause@ZoharPeled我的错,我不太清醒是的,你要求的输出看起来很奇怪。e、 g.前两行
处于活动状态=1
B\u ID
仍然
null
?@islamuddin您的查询为我提供了预期的输出though@JeremyC. 你看过问题了吗?在on子句中,在他的select语句中没有where子句……我没有使用where子句。我也用过clause@ZoharPeled我的错,我不太清醒是的,你要求的输出看起来很奇怪。e、 g.前两行
处于活动状态=1
B\u ID
仍然
null
?@islamuddin您的查询为我提供了预期的输出though@JeremyC. 你看过问题了吗?在on子句中,在他的select语句中没有where子句……我没有使用where子句。我也用过clause@ZoharPeled我的错,我不太清醒是的,你要求的输出看起来很奇怪。e、 g.前两行
处于活动状态=1
B\u ID
仍然
null
?@islamuddin您的查询为我提供了预期的输出though@JeremyC. 你看过问题了吗?在on子句中,在他的select语句中没有where子句……我没有使用where子句。我也用过clause@ZoharPeled我的错,我不太清醒是的,你要求的输出看起来很奇怪。e、 g.前两行
是活动的=1
,但
B\u ID
仍然
null
?@islamuddin对我来说,你的查询给出了预期的输出,请再次检查,这不会产生预期的结果。我得到的结果与提问者相同,例外。有什么区别?我监督什么吗?请参阅问题中提到的“所需输出”。它与您的查询生成的结果不同。某个地方的问题令人困惑。正如你所看到的,答案被标记为答案。所以这似乎是结果。:-)这就是为什么我说这个问题令人困惑。提问不正确。请再次检查,这没有产生期望的结果。我得到的结果与提问者的结果相同。有什么区别?我监督什么吗?请参阅问题中提到的“所需输出”。它与您的查询生成的结果不同。某个地方的问题令人困惑。正如你所看到的,答案被标记为答案。所以这似乎是结果。:-)这就是为什么我说这个问题令人困惑。提问不正确。请再次检查,这没有产生期望的结果。我得到的结果与提问者的结果相同。有什么区别?我监督什么吗?请参阅问题中提到的“所需输出”。它与您的查询生成的结果不同。某个地方的问题令人困惑。正如你所看到的,答案被标记为答案。所以这似乎是结果。:-)这就是为什么我说这个问题令人困惑。提问不正确。请再次检查,这没有产生期望的结果。我得到的结果与提问者的结果相同。有什么区别?我监督什么吗?请参阅问题中提到的“所需输出”。它与您的查询生成的结果不同。某个地方的问题令人困惑。正如你所看到的,答案被标记为答案。所以这似乎是结果。:-)这就是为什么我说这个问题令人困惑。问得不恰当。