如何识别不同列表中使用的ID?

时间:2013-08-07 19:29:46

标签: mysql distinct-values

我有以下数据

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 

我要做的是从“chain”和“subchain”列的不同列表中获取列“number”和“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列是主列,数字是唯一值链,是将多个记录链接/分组在一起的值。子链将该组区分为一个子组

1 个答案:

答案 0 :(得分: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;