我有一个数据库,其中每一行都有一个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
我做错了什么?
谢谢,
Dikla
感谢您的回答。我想补充说明:
如果有重复的URL,我不关心将返回哪些URL。
但是我需要让它们没有重复,即使行之间的XML不同。
有可能吗?
谢谢!
答案 0 :(得分:4)
select id, url, xml
from table1
where id in (
select min(id)
from table1
group by url)
会为您提供删除了重复网址的行(并且只包含重复网址的第一个实例)
答案 1 :(得分:2)
你需要重新阅读你的问题并思考它。
您要求的URL(可以是重复的)但您不需要重复,并且您还需要ID(不重复)。样本数据:
1,http://www.google.com
2,http://www.yahoo.com
3,http://www.google.com
在这种情况下,您想要返回什么,请记住谷歌有多个ID?
XML也是如此。如果它对于给定的URL不是唯一的,您需要指定如何只为每个URL获取一个条目,这就是您的查询不起作用的原因。
答案 2 :(得分:0)
您没有对列XML执行聚合函数,您必须将其包含在您的组中。
请记住,如果每一行的数据都不相同,那么它实际上无法进行分组,您将无法获得所需的结果,所有这些都是您向数据库询问的结果:)。 / p>
答案 3 :(得分: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