如何获取数据库中具有相同值的用户列表

时间:2019-10-30 11:02:27

标签: mysql

我想在Referid中获取具有相同值的用户的详细信息。在我的用户数据中,我有用户名,名字,姓氏,别称,用户名,手机,电话号码,地址,居住状态,国家,电子邮件,推荐电子邮件,推荐ID,用户阶段,创建日期,时间戳记

我不知道如何构造代码以使用户在Referid中具有相同的值。

示例。

Userid | referid| name | username|
 1     |201     | Jack | jack02  |
 2     |111     | john | john02  |
 3     |331     | phil | frl02   |
 4     |201     | jess | jagg02  |

它也会以表格形式列出

SELECT 
    users.userid, 
    users.firstname, 
    users.othername, 
    users.surname, 
    users.email,
    users.mobilephone,
    users.referalid,
    users.active,
    stages.stage_description 
FROM users 
INNER JOIN stages ON users.user_stage=stages.stage_id 
GROUP BY users.referalid 
HAVING COUNT(*) > 0

1 个答案:

答案 0 :(得分:1)

这似乎可以通过相关子查询解决:

select u.*
from users u
where (select count(*) from users u1 where u1.referid = u.refid) > 1

这将为您提供referid被至少另一个用户使用的所有用户的列表。尚不清楚表stages的用途是什么,所以我将其保留。

您也可以join进行汇总查询:

select u.*
from users u
inner join (
    select refid, count(*) from users group by refid having count(*) > 1
) g on g.refid = u.refid

或在MySQL 8.0中使用窗口函数:

select *
from (select u.*, count(*) over(partition by refid) cnt from users) x
where cnt > 1