2009-02-17 51 views
0

我有一個數據庫,其中每行都有一個id,一個URL和一個XML。 這些ID是唯一的,但URL列可以有重複項。 我需要所有的URL,沒有重複的,每個URL我需要id和XML。SQL「group by」問題 - 我無法選擇每一列

如果我只請求的URL和ID,我使用下面的查詢:

select URL, max(ID) as ID from T1 group by URL 

而且全部是偉大的工作。

但是,當我想還是XML,我用下面的查詢:

select URL, max(ID) as ID, XML from T1 group by URL 

我得到以下錯誤:

ISC ERROR CODE:335544569 
ISC ERROR MESSAGE: 
Dynamic SQL Error 
SQL error code = -104 
user name required 

我在做什麼錯?

感謝,

Dikla

感謝您的答案。我想添加一個解釋:
萬一重複的URL,我不在乎他們中的哪些將被返回。 但我需要讓它們沒有重複,即使XML在行之間不同。 這可能嗎?
謝謝!

+0

「但我需要讓他們不重複,即使XML是不同的」我很好奇你爲什麼需要XML,但不關心重複的URL在每個重複行上可能具有不同的XML,因此實際上,您將獲得檢索到的XML的「randon choice」 – Kristen 2009-02-17 11:38:11

+0

這是因爲XML具有兩行相同的細節,但它們只會在我不關心的日期和時間值上有所不同。 – Dikla 2009-02-17 18:58:25

回答

4
select id, url, xml 
from table1 
where id in (
    select min(id) 
    from table1 
    group by url) 

會給你去掉重複的URL行(只有重複的網址中的第一個實例包括在內)

0

您沒有對列XML執行聚合函數,您必須將其包含在您的組中。

請記住,如果數據對於每一行都不相同,它實際上不會被分組,並且您不會得到您正在查找的結果,只要它們是您向數據庫要求的結果:)。

2

您需要重讀您的問題並考慮一下。

您正在詢問網址(可能是重複的),但您不想重複,而且您還需要該ID(不重複)。示例數據:

1,http://www.google.com 
2,http://www.yahoo.com 
3,http://www.google.com 

在這種情況下,您要返回什麼,請記住有多個用於Google的ID?

同樣適用於XML。如果它不是唯一的給定的URL,你需要指定如何獲得每個URL只有一個條目,這就是爲什麼你的查詢不起作用。

0
select urlMaxId.id, urlMaxId.url, table1.html from (select url, max(id) id from table1 group by url) urlMaxId inner join table1 on urlMaxId.id = table1.id