我有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列,其中一些列为null,而另一些则不为。
我怎样才能使它成为一个所有这些都不为空的userID列?
答案 0 :(得分:0)
当您执行左连接时,在左表中找到但在右表中找不到的任何记录都会导致右表中的所有列都替换为空(反之亦然,右连接)。
如果您看到空值,则左表中的记录存在右表中不存在的给定用户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
如果您只关心一个表中的用户,则不需要join
。只需选择该表中的所有记录即可。
答案 1 :(得分:0)
我不是专业但是试试这个
SELECT* FROM permissions
RIGHT JOIN user_news_permission
ON permissions.userID = user_news_permission.userID;