我有一个如下所示的数据库
ID color number code
102966 red 1 9f6606069f9b999b
102968 red 1 9f6606069f9b999b
102967 red 1 9f0606069f9f9f9f
102969 red 1 9f0606069f9f9f9f
103630 red 1 bbff9f0f8fdc9f7e
101582 red 1 bbff9b0fcf9f99d9
102000 red 1 99fd9f0fab999fff
101603 red 1 bbff9f0d8f9d96df
102016 red 1 bbff9900c09999df
此表包含超过4000个条目。 我使用
得到了这个输出Select * from mytable order by code asc
现在我希望输出为Id-Id-Id ....其中代码类似。 所以对于给定的片段,它应该像
102966-102968
102967-102969
所以我想要那些记录是相似的,他们的代码应该是这样的。 请帮忙。
答案 0 :(得分:3)
我真的没看到你的最后一行结果是什么,可能是一个错误,或者我不明白你需要什么
我认为您正在寻找group_concat
select group_concat(ID ORDER BY ID SEPARATOR '-' ) AS dup
from mytable
GROUP BY code
HAvING count(*) >1
ORDER BY dup
结果:
| dup |
|---------------|
| 102966-102968 |
| 102967-102969 |
group_concat
显示与GROUP BY
匹配的所有值,此处显示ID
值。
术语SEPARATOR
用于指定-
作为ID之间的分隔符,因为默认分隔符为,
如果您想要所有行,即使那些没有重复code
的行,请删除having
子句
答案 1 :(得分:0)
select CONCAT(MIN(ID),'-',MAX(ID))
from mytable
GROUP BY code
HAvING count(*) >1