Yad*_*ada 57 sql sqlite join full-outer-join
SQLite只有INNER和LEFT JOIN.
有没有办法与SQLite进行完全外连接?
Mar*_*ers 93
是的,请参阅Wikipedia上的示例.
SELECT employee.*, department.*
FROM employee
LEFT JOIN department
ON employee.DepartmentID = department.DepartmentID
UNION ALL
SELECT employee.*, department.*
FROM department
LEFT JOIN employee
ON employee.DepartmentID = department.DepartmentID
WHERE employee.DepartmentID IS NULL
Run Code Online (Sandbox Code Playgroud)
Luk*_*zda 23
从 SQLite 3.39.0 开始原生支持 FULL OUTER JOIN:
“FULL JOIN”或“FULL OUTER JOIN”是“LEFT JOIN”和“RIGHT JOIN”的组合。为左侧数据集中与右侧不匹配的行以及右侧数据集中与左侧不匹配的每一行添加额外的输出行。不匹配的列用 NULL 填充。
演示:
CREATE TABLE t1 AS
SELECT 1 AS id, 'A' AS col UNION
SELECT 2 AS id, 'B' AS col;
CREATE TABLE t2 AS
SELECT 1 AS id, 999 AS val UNION
SELECT 3 AS id, 100 AS val;
Run Code Online (Sandbox Code Playgroud)
询问:
SELECT *
FROM t1
FULL JOIN t2
ON t1.id = t2.id;
Run Code Online (Sandbox Code Playgroud)
在乔纳森·莱夫勒(Jonathan Leffler)评论之后,这是马克·拜尔斯(Mark Byers)的另一种答案:
SELECT * FROM table_name_1 LEFT OUTER JOIN table_name_2 ON id_1 = id_2
UNION
SELECT * FROM table_name_2 LEFT OUTER JOIN table_name_1 ON id_1 = id_2
Run Code Online (Sandbox Code Playgroud)
请参阅此处以获取原始源代码和其他SQLite示例。