(select distinct rootid from bbs order by announceid desc)语句有错,如何改能与原意相同!(50分)

  • 主题发起人 主题发起人 freesweet
  • 开始时间 开始时间
select distinct rootid from bbs order by announceid desc
这条语句错误
select distinct rootid,announceid from bbs order by announceid desc
这条语句正确

我的目的是取rootid为不同的记录,且用另一个字段announceid排序
或者说:当含有distinct的语句时,如何实现select有多个字段,而distinct只对其中一个有效
 
order by 后的字段必须在 Select 中出现,

(select rootid,max(announceid) as announceid from bbs group by announceid order by announceid desc)

看你的具体要求,Max 改用 Min 也可以,
 
to 940801:
我已试过,好象语句是错的,再者并无distinct
如何避免重复现象!
请再帮忙!
 
select rootid from bbs group by rootid,announceid order by announceid desc
這樣應該沒有問題﹗
 
还是不行!
请大家看一下
我的原意(在表bbs中有两个字段,rootid和announceid,
其中rootid有重复,announceid为无重复,都为整型
如何实现查出无重复的rootid并按announceid降顺排列!
 
select distinct * from bbs group by announceid desc;
 
select rootid from bbs group by rootid order by announceid desc
 
不能实现是因为你的需求有问题:
>其中rootid有重复,announceid为无重复
又怎么可能announceid降序而tootid无重复呢?
必须有另外的约束条件才行!
(比如说:重复的tootid中取最大的announceid)
 
windz的分析挺有道理的。
 
我也碰到这问题……而且很急,各位大虾,多帮帮忙啦!
 
我也碰到这问题……而且很急,各位大虾,多帮帮忙啦!
各位到这里看看……
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=381253
 
select rootid,max(announceid) as announceid
from bbs
group by rootid
order by announceid desc//这样将取出唯一的rootid,如果有多条同样的rootid的话,
就取其中announceid最大的值的那条,如果你有多个字段需要取的话,除了rootid以外,所有
的其它字段都必须用max或者min将其限定一下,保证只能取出唯一的一个值,否则就会出现
多意性错误!
我用的是sql7.0
用distinct是取出字段列表中不重复的记录,也就是说必须列表的字段值都相同时才放弃
选择,而你的announceid是唯一的,因此会取出所有的记录,用distinct方法不能只限定
字段列表中的某一字段不重复!
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部