【问题标题】:Full outer join on mysql?mysql上的全外连接?
【发布时间】:2015-12-14 07:26:34
【问题描述】:

我有 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,而另一些则不是。

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

【问题讨论】:

  • 你想完成什么?当您使用full outer join 时,需要NULL 用户ID,因此您的问题没有意义。样本数据和期望的结果可能会有所帮助。

标签: mysql null full-outer-join


【解决方案1】:

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

如果您看到空值,则左表中存在具有给定用户 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。只需从该表中选择所有记录。

【讨论】:

    【解决方案2】:

    我不是专业的但是试试这个

    SELECT* FROM permissions
    RIGHT JOIN user_news_permission
    ON permissions.userID = user_news_permission.userID;
    

    【讨论】:

      猜你喜欢
      • 2013-03-11
      • 1970-01-01
      • 2021-10-12
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 2020-09-22
      • 2011-12-26
      • 1970-01-01
      相关资源
      最近更新 更多