0

我有以下数据

id -> Company_name   -> chain -> subchain    -> number
1  -> account 555    -> 555   -> 555ZZ       ->  123450
2  -> account 745    -> 745   -> 745AA       ->  123451
3  -> account 745    -> 745   -> 745AA       ->  123452
4  -> account 745    -> 745   -> 745BB       ->  123453
5  -> account 745    -> 745   -> 745CC       ->  123454
6  -> account 555    -> 555   -> 555ZZ       ->  123455 

我想要做的是从列“链”和“子链”的不同列表中获取列“数字”和列“id”的列表。

所以我需要知道那些具有相同链和不同子链的记录的编号、ID。

这段代码会给我一个不同的列表,但不会给我选择的数字和 ID。

如何使用 MySQL 处理这个问题?SELECT DISTINCT 链、子链 FROM 记录

以下是我需要的结果

id -> Company_name   -> chain -> subchain    -> number
1  -> account 555    -> 555   -> 555ZZ       ->  123450
2  -> account 745    -> 745   -> 745AA       ->  123451
4  -> account 745    -> 745   -> 745BB       ->  123453
5  -> account 745    -> 745   -> 745CC       ->  123454

id 列是主列,number 是唯一的 value chain 是将多个记录链接/组合在一起的值。子链将组区分为子组

4

1 回答 1

1

如果您可以使用任意 ID,则只需使用group by

SELECT max(id) as id, min(company_name) as company_name, chain, subchain, min(number) as number
FROM records
GROUP BY  chain, subchain;

如果您需要其他三个字段来自同一记录(例如您的示例中具有最低 id 的字段):

SELECT min(id) as id,
       substring_index(group_concat(company_name order by id), ',', 1) as company_name,
       chain, subchain,
       substring_index(group_concat(number order by id desc), ',', 1) + 0  as number
FROM records
GROUP BY chain, subchain;
于 2013-08-07T20:00:39.330 回答