mysql - 从mysql中选择相似的记录

标签 mysql sql database stored-procedures

我有一个如下所示的数据库

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

所以我希望那些记录是相似的,它们的代码应该是这样的。 请帮忙。

最佳答案

我真的不明白你最后一行的结果是什么,这可能是一个错误或者我不明白你需要什么

我想你正在寻找一个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 子句

SQL Fiddle

关于mysql - 从mysql中选择相似的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36821348/

相关文章:

mysql - 如何将 "empty"POINT() 几何值输入到 POINT 类型的 MySQL 字段中?

MySQL 加入具有多个 ON 条件的同一个表?

Mysql Left Join 和 Sum 无法正确处理按月和年分组

sql - 使用 Active Record 的复杂 Ruby SQL 查询 - WHERE 使用 OR 子句和子查询

sql-server - 区分大小写的数据库有什么好处吗?

mysql - mysql中覆盖索引是否比最左前缀索引策略优先级高?

c# - 在 Click-Once 应用程序中包含 SQLite?

sql - 如何在部署脚本的事务中包含 ALTER VIEW 语句?

java - Android SQLite 简介

android - 为什么我们需要 onUpgrade(); SQLiteOpenHelper 类中的方法