SQL left join-and after on子句不起作用
我在SQL的左连接中有一个场景,它没有生成我所需要的输出。以下是表格形式的描述和我尝试过的查询 表ASQL 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
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对我来说,你的查询给出了预期的输出,请再次检查,这不会产生预期的结果。我得到的结果与提问者相同,例外。有什么区别?我监督什么吗?请参阅问题中提到的“所需输出”。它与您的查询生成的结果不同。某个地方的问题令人困惑。正如你所看到的,答案被标记为答案。所以这似乎是结果。:-)这就是为什么我说这个问题令人困惑。提问不正确。请再次检查,这没有产生期望的结果。我得到的结果与提问者的结果相同。有什么区别?我监督什么吗?请参阅问题中提到的“所需输出”。它与您的查询生成的结果不同。某个地方的问题令人困惑。正如你所看到的,答案被标记为答案。所以这似乎是结果。:-)这就是为什么我说这个问题令人困惑。提问不正确。请再次检查,这没有产生期望的结果。我得到的结果与提问者的结果相同。有什么区别?我监督什么吗?请参阅问题中提到的“所需输出”。它与您的查询生成的结果不同。某个地方的问题令人困惑。正如你所看到的,答案被标记为答案。所以这似乎是结果。:-)这就是为什么我说这个问题令人困惑。提问不正确。请再次检查,这没有产生期望的结果。我得到的结果与提问者的结果相同。有什么区别?我监督什么吗?请参阅问题中提到的“所需输出”。它与您的查询生成的结果不同。某个地方的问题令人困惑。正如你所看到的,答案被标记为答案。所以这似乎是结果。:-)这就是为什么我说这个问题令人困惑。问得不恰当。