mysql - mysql 上的完全外连接?

标签 mysql null full-outer-join

我有 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/

相关文章:

php - 如何从 MySQL 数据创建二维码?

mysql - Linux 定制 Cron - 从 Mysql 运行 cron

java - 抛出不可能的 NullPointerException

objective-c - NSJSONSerialization 和 NSNull

sql - 如何在 MySQL 中执行 FULL OUTER JOIN?

sql - 合并多个表

Mysql:varchar 上的部分索引

c# - 传递我的逗号分隔字符串不会在 SQL 中生成结果

将结构数组的索引与 NULL 进行比较,而不是评估为 true;

mysql - Full Outer Join "with"表不工作