首页  >  问答  >  正文

左连接导致结果为空

我在这里使用的连接方式正确吗?试图找出代码中的问题在哪里。尝试更改内部、外部和右连接,只是为了试试。

SELECT users.region, count(internal_profile_views.user_id)
from users
Left JOIN internal_profile_views
ON users.id = internal_profile_views.user_id
AND users.id = internal_profile_views.viewed_user_id
GROUP BY users.region;

表结构:https://i.stack.imgur.com/nFUZO.jpg

我得到的输出结果:

西0 东北 0 南 0 其他 0 中西部0

P粉743288436P粉743288436200 天前395

全部回复(1)我来回复

  • P粉986937457

    P粉9869374572024-04-02 17:42:02

    根据你的架构,看起来internal_profile_views表示用户资料查看该资料的用户之间的M:N表。

    在这种情况下,internal_profile_views中具有相同的user_idviewed_user_id值的行表示用户正在查看自己的资料,具有不同值的行表示用户正在查看其他人的资料。

    在你的连接语句中,你使用了一个条件,其中user_idviewed_user_id必须匹配相同的users.id记录才能包含在结果中。很可能你只打算在一个列上进行连接,而不是两个。

    在此基础上,你的查询可能是以下之一:

    SELECT viewer.region as Viewer_Region, count(views.user_id) as Unique_Viewers
    FROM internal_profile_views views
    INNER JOIN users viewer ON views.user_id = viewer.id
    GROUP BY viewer.region;
    SELECT profileOwner.region as Profile_Region, count(views.user_id) as Unique_Viewers
    FROM internal_profile_views views
    INNER JOIN users profileOwner ON views.viewed_user_id = profileOwner.Id
    INNER JOIN users viewer ON views.user_id = viewer.id
    GROUP BY users.region;

    回复
    0
  • 取消回复