2011-11-20 58 views
2

我有一個類似於MAC地址的字段,第一部分是組ID,第二部分是序列號。我的字段是字母數字和5位數字,前3個是組ID。選擇不同的子字符串值

我需要一個查詢,可以按字典順序給出所有不同的組ID和第一個序列號。下面是樣本數據:

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

所需的輸出:

ID 
----- 
X4MCC 
V21DD 
8Z6BB 

我知道我可以做SELECT DISTINCT SUBSTRING(ID, 1, 3)但我不知道如何獲得的第一個字典序。

+0

我會以同樣的組ID組,並選擇基於行ID的第一個。當我處理查詢時只是一個提示。 – Sid

回答

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 
+0

太快了!大。給予好評。 – Sid

+0

這告訴我WHERE附近的語法不正確。我複製並粘貼,然後將字段名稱和表格更改爲真正的表格...檢查了拼寫錯誤,我沒有看到我做錯了什麼。如果我只是運行內部查詢,它運行良好 – SupremeDud

+2

@SupremeDud您需要在派生表上的別名。 –

3

這似乎是由GBN具有相同的成本作爲查詢的另一種方法:

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

這也可以,謝謝! – SupremeDud