[英]SQLite simplify union of left outer join
我继承了一些怪物 SQL 查询,我想尽可能地简化/缩短它们。
其中之一是:
SELECT
*
FROM
(
SELECT
$columnsFromBothTables
FROM
table_abc
left outer join table_xyz using profile_id
union
select
$columnsFromBothTables
from
table_xyz
left outer join table_abc using profile_id
)
它看起来奇怪地多余。
有没有办法将其简化为某事?
SELECT * FROM (
SELECT $columns FROM table_abc MAGIC_OPERATION table_xyz
)
不是全外连接吗?
更新:我的理解是两个表都与“配置文件”表有 M-1 关系。
他们彼此没有直接关系
这类似于但不完全是full outer join
。 我会为full outer join
推荐这种方法:
select $columns
from abc left join
xyz
on . . .
union all
select $columns
from xyz left join
abc
on . . .
where abc.? is null; -- some column to validate that there is no match
注意:这不会删除重复项 - 您的代码会这样做。 这就是为什么这个版本应该表现得更好。 但它可能不完全符合您的要求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.