[英]Inner Join with count on 3 tables
我们有3张桌子
现在,我们要在查询中进行2次检查。
这是我们尝试的查询,但是没有找到正确的查询,这意味着它始终在拾取1条记录,但未拾取任何其他随机记录。
select membersurlss.Username, COUNT(membersurlss.ID)
from membersurlss
INNER JOIN users ON membersurlss.Username=users.Username
INNER JOIN matrix1 ON matrix1.Username=users.Username
having COUNT(membersurlss.ID)>1
order by rand() limit 0,1
我们想要随机记录。
您的查询将计算所有用户的ID。 为了计算每个用户的ID,您需要使用GROUP BY membersurlss.Username
。
select membersurlss.Username, COUNT(membersurlss.ID)
from membersurlss
INNER JOIN users ON membersurlss.Username=users.Username
INNER JOIN matrix1 ON matrix1.Username=users.Username
GROUP BY membersurlss.Username
having COUNT(membersurlss.ID)>1
order by rand() limit 0,1
如果users
和matrix1
表中的Username
是唯一的,则此方法应该起作用。
如果membersurlss.ID
是唯一的(或主键),则应使用DISTINCT
以便仅计算membersurlss
表中的出现membersurlss
:
select membersurlss.Username, COUNT(DISTINCT membersurlss.ID)
from membersurlss
INNER JOIN users ON membersurlss.Username=users.Username
INNER JOIN matrix1 ON matrix1.Username=users.Username
GROUP BY membersurlss.Username
having COUNT(DISTINCT membersurlss.ID)>1
order by rand() limit 0,1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.