MYSQL :列出 table 中出现的所有重复项
MYSQL : list all occurrences of duplicates in a table
我想列出 table 中出现的所有重复项并按其 ID 重新分组。
这是我的 table :
+------------+----+
| name | id |
+------------+----+
| Produit 78 | 5 |
| Produit 78 | 6 |
| Produit 78 | 11 |
| Produit 69 | 12 |
| Produit 12 | 14 |
| Produit 12 | 15 |
| Produit 92 | 22 |
| Produit 92 | 25 |
我已经试过了:
select name, id from commande_ligne group by name having count(name) > 1;
但它只列出了第一次出现的副本。
而我想要这样的东西:
+------------+-------+
| name | id |
+------------+-------+
| Produit 78 | 5,6,11|
| Produit 12 | 14,15 |
| Produit 92 | 22,25 |
我觉得你应该把名字和号码分成不同的属性:
name | number | id
和 SQL 查询应该是这样的:
select ...
group by name, number;
取决于你想做什么。
是这样的吗?
提供的数据样例名称为Product 78 with an Id,无法达到你要的结果,因为Unique ID下总有一个Product 78有唯一ID,所以无法按ID分组,但是,您可以按产品 78 的名称分组记录的不同 ID 按名称分组,它将显示按字段名称
分组时的 ID 5、6、11
分组SQL语句将是
select id, name from commande_ligne group by name order by name
结果应该显示
产品 78
ID
5个
6个
11
产品 12
ID
14
15
这就是您将得到的结果
如果你想要重复项中id
的所有值,你可以这样做:
select name, GROUP_CONCAT(id)
from commande_ligne
group by name having count(name) > 1;
阅读有关 GROUP_CONCAT() function 的更多信息。
我想列出 table 中出现的所有重复项并按其 ID 重新分组。
这是我的 table :
+------------+----+
| name | id |
+------------+----+
| Produit 78 | 5 |
| Produit 78 | 6 |
| Produit 78 | 11 |
| Produit 69 | 12 |
| Produit 12 | 14 |
| Produit 12 | 15 |
| Produit 92 | 22 |
| Produit 92 | 25 |
我已经试过了:
select name, id from commande_ligne group by name having count(name) > 1;
但它只列出了第一次出现的副本。
而我想要这样的东西:
+------------+-------+
| name | id |
+------------+-------+
| Produit 78 | 5,6,11|
| Produit 12 | 14,15 |
| Produit 92 | 22,25 |
我觉得你应该把名字和号码分成不同的属性:
name | number | id
和 SQL 查询应该是这样的:
select ...
group by name, number;
取决于你想做什么。
是这样的吗?
提供的数据样例名称为Product 78 with an Id,无法达到你要的结果,因为Unique ID下总有一个Product 78有唯一ID,所以无法按ID分组,但是,您可以按产品 78 的名称分组记录的不同 ID 按名称分组,它将显示按字段名称
分组时的 ID 5、6、11分组SQL语句将是
select id, name from commande_ligne group by name order by name
结果应该显示 产品 78 ID 5个 6个 11 产品 12 ID 14 15 这就是您将得到的结果
如果你想要重复项中id
的所有值,你可以这样做:
select name, GROUP_CONCAT(id)
from commande_ligne
group by name having count(name) > 1;
阅读有关 GROUP_CONCAT() function 的更多信息。