mysql 上的完全外部联接?
Full outer join on mysql?
我有 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 列不为空?
当您进行左联接时,在左侧 table 而在右侧 table 中找不到的任何记录将导致右侧 table 中的所有列都替换为空值 (右联接反之亦然)。
如果您看到空值,则左侧 table 中存在具有给定用户 ID 的记录,而右侧 table 中不存在记录,或者右侧 [=28] 中存在记录=]左边不存在table.
如果您要查找来自 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
如果您只关心一个 table 中的用户,则不需要 join
。 select 来自 table 的所有记录。
我不是专业人士但是试试这个
SELECT* FROM permissions
RIGHT JOIN user_news_permission
ON permissions.userID = user_news_permission.userID;
我有 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 列不为空?
当您进行左联接时,在左侧 table 而在右侧 table 中找不到的任何记录将导致右侧 table 中的所有列都替换为空值 (右联接反之亦然)。
如果您看到空值,则左侧 table 中存在具有给定用户 ID 的记录,而右侧 table 中不存在记录,或者右侧 [=28] 中存在记录=]左边不存在table.
如果您要查找来自 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
如果您只关心一个 table 中的用户,则不需要 join
。 select 来自 table 的所有记录。
我不是专业人士但是试试这个
SELECT* FROM permissions
RIGHT JOIN user_news_permission
ON permissions.userID = user_news_permission.userID;