选择不同的子字符串值

时间:2011-11-20 16:19:22

标签: tsql substring distinct

我有一个类似于MAC地址的字段,第一部分是组ID,第二部分是序列号。我的字段是字母数字,长度为5位,前3个是组ID。

我需要一个查询,以字典方式为我提供所有不同的组ID和第一个序列号。以下是示例数据:

ID
-----
X4MCC
X4MEE
X4MFF
V21DD
8Z6BB
8Z6FF

期望的输出:

ID
-----
X4MCC
V21DD
8Z6BB

我知道我可以做SELECT DISTINCT SUBSTRING(ID, 1, 3)但我不知道如何按字典顺序排列第一个。

2 个答案:

答案 0 :(得分:3)

另一种方式似乎与 gbn 的查询成本相同:

SELECT MIN(id)
FROM your_table
GROUP BY SUBSTRING(id, 1, 3);

答案 1 :(得分:2)

SELECT
   ID
FROM
   (
   SELECT
      ID,
      ROW_NUMBER() OVER (PARTITION BY SUBSTRING(ID, 1, 3) ORDER BY ID) AS rn
   FROM MyTable
   ) oops
WHERE
   rn = 1