0

我有 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 列,其中一些为空,而另一些则不是。

我怎样才能使它成为一个用户 ID 列,所有这些列都不为空?

4

2 回答 2

0

当您进行左连接时,在左表中但不在右表中找到的任何记录都将导致右表中的所有列都被空值替换(右连接反之亦然)。

如果您看到空值,则左表中存在具有给定 userID 但右表中不存在的记录,或者右表中存在左表中不存在的记录。

如果您正在寻找来自 的用户 ID 和来自的permissions任何信息user_news_permission,联合的前半部分就足够了:

select * from permissions 
left join user_news_permission on permissions.userID = user_news_permission.userID

如果您正在查找来自 的用户 ID 和来自的user_news_permission任何信息permissions,则联合的后半部分就足够了:

select * from permissions 
right join user_news_permission on permissions.userID = user_news_permission.userID

如果您只关心一个表中的用户,则 ajoin不是必需的。只需从该表中选择所有记录。

于 2015-09-17T12:28:16.767 回答
0

我不是专业人士 但试试这个

SELECT* FROM permissions
RIGHT JOIN user_news_permission
ON permissions.userID = user_news_permission.userID;
于 2015-09-17T12:36:25.360 回答