2017-08-10 73 views
-2

我的查詢是爲了避免在選擇所有列時在特定列中出現重複。但是由於seq.number列也被選中,因此DISTINCT不起作用。 任何想法使查詢工作 在下面的例子中,查詢seq_num是唯一鍵。如何在選擇包括序列號列的所有列時使用DISTINCT?

編輯:包括在圖像

select DISTINCT(name), seq_num from table_1;![enter image description here](https://i.stack.imgur.com/Y3NYn.jpg) 
+2

顯示您擁有的數據和您想要的數據示例 – I3rutt

+0

我的失望是因爲您沒有提供足夠的信息來解決您的問題。具體而言,包括您的輸入數據樣本以及您期望的輸出結果以及原因。 – SandPiper

+0

請[不要張貼圖片](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-問題/ 285557#285557)當你可以發表文字。顯示有代表性的樣本數據,當前查詢和輸出以及所需輸入,全部爲格式化文本。但是你的問題並不合理 - 如果'seq_num'是唯一的,那麼'seq_num'不能有重複的名字;如果你重複名稱,只想顯示每個名字,那麼你將如何決定*哪個* seq_num顯示每個名字? –

回答

2

樣本數據對於兩列該查詢將是足夠的:

SELECT name, min(seq_num) 
FROM table 
GROUP BY name 

更多列,使用row_number解析functon

SELECT name, col1, col2, .... col500, seq_num 
FROM (
    SELECT t.*, row_number() over (partition by name order by seq_num) As rn 
    FROM table t 
) 
WHERE rn = 1 

的以上查詢只選擇一個給定名稱的行,併爲ea選擇最小的seq_num值ch名稱。

+0

非常感謝。這絕對有幫助! –

0

你不能做你想做的。請閱讀有關DISTINCT子句和查詢結果集的更多信息。你會明白distinct不適合你的問題。如果您提供了一些樣本數據以瞭解您擁有的內容以及應該查詢的內容,那麼我們將盡可能幫助您。

+0

嗨...我其實想要消除重複和我知道使用DISTINCT的現成選項。感謝您清除有其他選項可以解決。 –

相關問題