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)

会给你删除重复网址的行(并且只包括重复网址的第一个实例)

于 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 的一个条目,这就是您的查询不起作用的原因。

于 2009-02-17T11:00:35.093 回答
0

您没有对列 XML 执行聚合函数,您必须将其包含在您的分组依据中。

请记住,如果每一行的数据都不同,则实际上无法对其进行分组,并且您将无法获得所需的结果,尽管它们都是您向数据库询问的结果:)。

于 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 回答