SQL语句问题???!!!
一张表里存储着不同类别(class_ID)的记录。
我现在想用一条SQL实现 每个class_ID 取一条记录!
怎么办?
问题点数:50、回复次数:10Top
1 楼blackfiles(一个和尚挑水喝)回复于 2001-12-11 11:52:46 得分 5
select Class_ID,Count(*) from Table group by Class_id having Count(*)>1Top
2 楼N_chow(Yukon)回复于 2001-12-11 12:03:21 得分 5
Select * From tablename where class_id in (select distinct class_id from tablename)Top
3 楼nashan(浪客剑心)回复于 2001-12-11 12:09:03 得分 5
select Class_ID,otherfields from Table group by Class_id Top
4 楼supine(懒人)回复于 2001-12-11 12:38:42 得分 5
to blackfiles(从来是我伤心):
你取的是class_id记录数不止一条的classid
to N_chow(一劍飄香):
你的结果跟没条件是一样的!
to nashan(浪客剑心):
你的语法不正确,group by 分组函数必须有聚集函数!
这条语句看具体的需求,如果对于其他字段没什么要求,可以在nashan(浪客剑心)的语句上地otherfields上加上聚集函数,如max,min,sum()等,即可
Top
5 楼net_steven(素狼(W))回复于 2001-12-11 12:43:28 得分 0
明白你的意思。sql语句固然强大,但这个问题不是一句sql就能解决的。Top
6 楼bluepower2008(蓝色力量)回复于 2001-12-11 13:37:47 得分 10
这是个最普通的sql需求
select * from table where id in (select min(id) from table group by Class_id)
id为table的PK
Top
7 楼Haiwer(海阔天空)回复于 2001-12-11 13:48:53 得分 10
select * from TableName a,
(
select Class_ID,min(Key) as Key
from TableName
group by Class_id
) b
where a.key=b.key
其中Key为你的表的主键或唯一索引.
Top
8 楼panther_totem(青争岁月)回复于 2001-12-11 14:14:18 得分 0
对了,你的通过其他的主键在用class_id分组的情况下取一条最大或小的纪录。Top
9 楼net_steven(素狼(W))回复于 2001-12-11 15:05:22 得分 0
同意楼上三位的。Top
10 楼tommychim(阿布洛迪)回复于 2001-12-11 15:58:40 得分 10
同意supine
如果除了class_id外还有a,b,c等字段,那么可以用以下语句
select class_id,min(a) as a,min(b) as b,min(c) as c from tablename group by class_id
Top




