左连接导致结果为空
P粉743288436
P粉743288436 2024-04-02 00:27:45
0
1
421

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

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粉743288436
P粉743288436

全部回复(1)
P粉986937457

根据你的架构,看起来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;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板