Mysql 显示重复的行号
我将一个表连接到它本身以查找重复的行Mysql 显示重复的行号,mysql,sql,duplicates,Mysql,Sql,Duplicates,我将一个表连接到它本身以查找重复的行 select a.data, a.rowNumber, b.rowNumber from DuplicateRows as a join DuplicateRows as b on a.data = b.data and a.Id != b.Id group by a.data, a.rowNumber, b.rowNumber 此查询给出如下结果 "content" | 1 | 2 "content" | 1 | 6 "content" | 2 | 1
select a.data, a.rowNumber, b.rowNumber
from DuplicateRows as a
join DuplicateRows as b
on
a.data = b.data and a.Id != b.Id
group by a.data, a.rowNumber, b.rowNumber
此查询给出如下结果
"content" | 1 | 2
"content" | 1 | 6
"content" | 2 | 1
"content" | 2 | 6
...and so on
为什么我要重写它以形成这样的结果
"content" | 1 | 2, 6
编辑
我认为这个问题应该纠正一下。
你看,我不想得到相反的结果,我的意思是我只想得到
一项
`1 -> 2, 6`
不是
谢谢 使用组_CONCAT
尝试mysql中的GROUP_CONCAT函数
select a.data, a.rowNumber, group_concat(b.rowNumber)
from DuplicateRows as a
join DuplicateRows as b
on
a.data = b.data and a.Id != b.Id
group by a.data, a.rowNumber, b.rowNumber
根据您最近的编辑,我认为这是您需要的:
SELECT a.data, a.a, GROUP_CONCAT( DISTINCT b.a)
FROM TableName as a
JOIN TableName as b
ON a.data = b.data AND a.a < b.a
GROUP BY a.data
附言
我用过并稍微修改了吴宇森的桌子
编辑
此查询的结果相对较好:
SELECT a.data, MIN(a.rowNumber), GROUP_CONCAT( DISTINCT b.rowNumber)
FROM DuplicateRows AS a
JOIN DuplicateRows AS b
ON a.data = b.data AND a.rowNumber < b.rowNumber
GROUP BY a.data
小提琴是。而不是a.Id!=b、 我建议b.Id>a.Id
SELECT a.data, a.a, GROUP_CONCAT( DISTINCT b.a)
FROM TableName as a
JOIN TableName as b
ON a.data = b.data AND a.a < b.a
GROUP BY a.data
SELECT a.data, MIN(a.rowNumber), GROUP_CONCAT( DISTINCT b.rowNumber)
FROM DuplicateRows AS a
JOIN DuplicateRows AS b
ON a.data = b.data AND a.rowNumber < b.rowNumber
GROUP BY a.data