我有 2 个表,我想让它们成为完全外连接。
我正在使用以下查询:
select * from permissions
left join user_news_permission on permissions.userID = user_news_permission.userID
union
select * from permissions
right join user_news_permission on permissions.userID = user_news_permission.userID
但它会生成两个 userID 列,有些为空,有些则不是。
如何使其成为一个 userID 列,并且所有列都不为空?
最佳答案
当您执行左联接时,在左表中找到但在右表中未找到的任何记录都将导致右表中的所有列替换为空值(右联接反之亦然)。
如果您看到空值,则表明左表中存在具有给定用户 ID 的记录,而右表中不存在该记录,或者右表中存在左表中不存在的记录。
如果您要从 permissions
查找用户 ID 以及从 user_news_permission
查找任何信息,则联合的前半部分就足够了:
select * from permissions
left join user_news_permission on permissions.userID = user_news_permission.userID
如果您要从 user_news_permission
中查找用户 ID 以及从 permissions
中查找任何信息,则联合的后半部分就足够了:
select * from permissions
right join user_news_permission on permissions.userID = user_news_permission.userID
如果您只关心一张表中的用户,则不需要联接
。只需从该表中选择所有记录即可。
关于mysql - mysql 上的完全外连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32630115/