我有2个不同的表。
我的目标是找到使用相同IP地址但名称不同的人。
表1-日志
字段:member_id,ip_adress
表2-成员
字段:ID,名称,姓氏
您可以使用GROUP_CONCAT:
SELECT
ip_adress, GROUP_CONCAT(name)
FROM table1
LEFT JOIN
table2 ON table1.member_id = table2.id
GROUP BY
ip_adress
@@ Deker @The Impaler
我有2个不同的表。
我的目标是找到使用相同IP地址但名称(姓和名)不同的人。
表1-成员
字段:ID,名称,姓氏
87-约翰-但是88-约翰-但是89-Alex-Lopez90-大卫-贝克汉姆
表2-日志
字段:member_id,ip_adress
87-1.1.1.188-1.1.1.189-2.2.2.290-2.2.2.2
我想要得到的结果
2.2.2.2-89,90-总计(2)
谢谢
在MySQL 8.x中,您可以使用ROW_NUMBER()
标识哪些IP地址具有多个成员。
例如:
select id, name, last_name
from (
select m.*,
row_number() over(partition by l.ip_address
order by m.name, m.last_name) as rn
from members m
join logs l on l.member_id = m.id
) x
where rn = 2
对于MySQL 5.7的编辑
由于MySQL 5.x没有窗口功能,您可以这样做:
select m.*
from members m
join logs l on l.member_id = m.id
where l.ip_address in (
select l.ip_address
from members m
join logs l on l.member_id = m.id
group by l.ip_address
having min(m.name) <> max(m.name) or min(m.last_name) <> max(m.last_name)
)
请参见DB Fiddle的Running Example。>>