0

各行に ID、URL、および XML があるデータベースがあります。ID は一意ですが、URL 列は重複する可能性があります。重複のないすべての URL が必要です。各 URL には ID と XML が必要です。

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

私は何を間違っていますか?

ありがとう、

ディクラ

答えてくれてありがとう。説明を追加したい:
URL が重複している場合、どちらが返されるかは気にしません。ただし、行間で XML が異なっていても、重複することなくそれらを取得する必要があります。出来ますか?
ありがとう!

4

4 に答える 4

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

重複するURLが削除された行が表示されます(重複するURLの最初のインスタンスのみが含まれます)

于 2009-02-17T11:07:09.663 に答える
2

あなたの質問を読み直して、それについて考える必要があります。

URL(重複する可能性があります)を求めていますが、重複は望まず、ID(重複していない)も必要です。サンプルデータ:

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

この場合、Google には複数の ID があることを念頭に置いて、正確には何を返したいのでしょうか?

XML についても同様です。特定の URL に対して一意でない場合は、URL ごとに 1 つのエントリのみを取得する方法を指定する必要があり、それがクエリが機能しない理由です。

于 2009-02-17T11:00:35.093 に答える
0

列 XML で集計関数を実行する必要はありません。それを group by に含める必要があります。

行ごとにデータが異なる場合、実際にはグループ化できず、探している結果が得られないことに注意してください。データベースに要求した結果であっても:)。

于 2009-02-17T10:57:28.643 に答える
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
于 2009-02-17T11:46:19.757 に答える