我有以下数据
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列是主列,数字是唯一值链,是将多个记录链接/分组在一起的值。子链将该组区分为一个子组
答案 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;