gpt4 book ai didi

mysql - 即使在 MYSQL LEFT JOIN 中存在 Join 之后,如何带 NULL 值

转载 作者:行者123 更新时间:2023-11-29 17:03:04 30 4
gpt4 key购买 nike

我在 MySQL 数据库中有 2 个名为 DEPARTMENT_MASTER 和 DIVISION_MASTER 的表。

DEPARTMENT_MASTER              DIVISION_MASTER
DEPT_ID | DEPT_NAME DIVISION_ID | DIVISION_NAME | DEPT_ID
1 | HR 1 | DIV1 | 1
2 | CLINICAL 2 | DIV2 | 1
3 | IT 3 | DIV3 | 2

我有这个简单的 SQL 查询 -

SELECT DM.DEPT_NAME, DV.DIVISION_NAME, DM.DEPT_ID, DV.DIVISION_ID 
FROM DEPARTMENT_MASTER DM
LEFT JOIN DIVISION_MASTER DV ON DM.DEPT_ID = DV.DEPT_ID

因此我得到这样的结果

DEPT_NAME | DIVISION_NAME | DEPT_ID | DIVISION_ID
HR | DIV1 | 1 | 1
HR | DIV2 | 1 | 2
CLINICAL | DIV3 | 2 | 3
IT | NULL | 3 | NULL

有什么方法可以让我得到这样的结果-

DEPT_NAME | DIVISION_NAME | DEPT_ID | DIVISION_ID
HR | NULL | 1 | NULL
HR | DIV1 | 1 | 1
HR | DIV2 | 1 | 2
CLINICAL | NULL | 2 | NULL
CLINICAL | DIV3 | 2 | 3
IT | NULL | 3 | NULL

最佳答案

您只需添加一个带有查询的 UNION 即可返回您想要的所有空值。

SELECT * FROM (
SELECT DM.DEPT_NAME, DV.DIVISION_NAME, DM.DEPT_ID, DV.DIVISION_ID
FROM DEPARTMENT_MASTER DM
LEFT JOIN DIVISION_MASTER DV ON DM.DEPT_ID = DV.DEPT_ID
UNION
SELECT DEPT_NAME, NULL, DEPT_ID, NULL
FROM DEPARTMENT_MASTER) AS x
ORDER BY DEPT_NAME, DIVISION_NAME

但在这种情况下,您也可以使用 INNER JOIN,因为 UNION 将为匹配行和不匹配行添加空行。

SELECT * FROM (
SELECT DM.DEPT_NAME, DV.DIVISION_NAME, DM.DEPT_ID, DV.DIVISION_ID
FROM DEPARTMENT_MASTER DM
INNER JOIN DIVISION_MASTER DV ON DM.DEPT_ID = DV.DEPT_ID
UNION ALL
SELECT DEPT_NAME, NULL, DEPT_ID, NULL
FROM DEPARTMENT_MASTER) AS x
ORDER BY DEPT_NAME, DIVISION_NAME

关于mysql - 即使在 MYSQL LEFT JOIN 中存在 Join 之后,如何带 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52162237/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com