z**k 发帖数: 378 | 1 大家帮忙
我的table大概是这样的
Attr1, Attr2, Attr3
A 1 1.1213
A 2 3.3242
A 3 2.123
B 4 8.123
B 5 3.1232
Attr1和Attr2都排好序了(分别都是增序,可以把Attr2看作是Index),我现在想对每
个Attr1取
第一个record,这样的SQL代码该怎么写啊 |
i****a 发帖数: 36252 | |
z**k 发帖数: 378 | 3 咦,我用postgresql怎么没有这个功能,我查document是有的啊。。。
我的版本8.3.7是不是太低了
【在 i****a 的大作中提到】 : use rank and partition
|
i****a 发帖数: 36252 | 4 oh, don't know that system, can't help. wait for big cows to help you ba |
j*****n 发帖数: 1781 | 5 try to take advantage of LIMIT, maybe |
a9 发帖数: 21638 | 6 select * from table where attr2 in (select max(attr2) from table group by
attr1)
【在 z**k 的大作中提到】 : 大家帮忙 : 我的table大概是这样的 : Attr1, Attr2, Attr3 : A 1 1.1213 : A 2 3.3242 : A 3 2.123 : B 4 8.123 : B 5 3.1232 : Attr1和Attr2都排好序了(分别都是增序,可以把Attr2看作是Index),我现在想对每 : 个Attr1取
|
j*****n 发帖数: 1781 | 7 wrong... but close.
【在 a9 的大作中提到】 : select * from table where attr2 in (select max(attr2) from table group by : attr1)
|
p**e 发帖数: 11 | 8 select * from(
select *,
ROW_NUMBER() over(partition by attr1 order by attr2 asc) rn
from sample ) c
where rn<2;
【在 j*****n 的大作中提到】 : wrong... but close.
|
i****a 发帖数: 36252 | 9 seems like LZ's system doesn't have rank/row_number and partition
【在 p**e 的大作中提到】 : select * from( : select *, : ROW_NUMBER() over(partition by attr1 order by attr2 asc) rn : from sample ) c : where rn<2;
|
j*****n 发帖数: 1781 | 10 finally got some time...
select A.*
from table AS A
join (select attr1, min(attr2) as theOne
from table
group by attr1) AS B
ON A.attr1 = b.attr1 AND A.Attr2 = B.theOne
【在 i****a 的大作中提到】 : seems like LZ's system doesn't have rank/row_number and partition
|
|
|
a9 发帖数: 21638 | 11 你这个和我那个有什么区别啊?
不就是多了个attr1列?
【在 j*****n 的大作中提到】 : finally got some time... : select A.* : from table AS A : join (select attr1, min(attr2) as theOne : from table : group by attr1) AS B : ON A.attr1 = b.attr1 AND A.Attr2 = B.theOne
|
B*****g 发帖数: 34098 | 12 终于有时间读post了
【在 j*****n 的大作中提到】 : finally got some time... : select A.* : from table AS A : join (select attr1, min(attr2) as theOne : from table : group by attr1) AS B : ON A.attr1 = b.attr1 AND A.Attr2 = B.theOne
|
w*****7 发帖数: 263 | 13 这位同学, 你那个query出来的max值对应的是哪个attr1呀? (如果没attr1的话)
【在 a9 的大作中提到】 : 你这个和我那个有什么区别啊? : 不就是多了个attr1列?
|
j*****n 发帖数: 1781 | 14 give a try, you will see the diff is big...
【在 a9 的大作中提到】 : 你这个和我那个有什么区别啊? : 不就是多了个attr1列?
|
B*****g 发帖数: 34098 | 15 其实要考虑:
1.attr2是不是unique?
2.attr1,attr2 combine是不是unique?
3.几个column的type
4.index在哪?
【在 j*****n 的大作中提到】 : give a try, you will see the diff is big...
|
j*****n 发帖数: 1781 | 16 en, 看来俺还是没仔细...
【在 B*****g 的大作中提到】 : 其实要考虑: : 1.attr2是不是unique? : 2.attr1,attr2 combine是不是unique? : 3.几个column的type : 4.index在哪?
|
m**k 发帖数: 4039 | 17 既然楼主说attr2可以作为index, 那他的script没大错, 把max改成min就对了
【在 j*****n 的大作中提到】 : wrong... but close.
|
w*******e 发帖数: 1622 | 18 en, 北京MM考虑很全呀
赞!
【在 B*****g 的大作中提到】 : 其实要考虑: : 1.attr2是不是unique? : 2.attr1,attr2 combine是不是unique? : 3.几个column的type : 4.index在哪?
|
a9 发帖数: 21638 | 19 9494
【在 m**k 的大作中提到】 : 既然楼主说attr2可以作为index, 那他的script没大错, 把max改成min就对了
|
B*****g 发帖数: 34098 | 20 其实楼主说的都没用:
1.index不一定unique
2.在数据库里排序了啥用都没有
【在 m**k 的大作中提到】 : 既然楼主说attr2可以作为index, 那他的script没大错, 把max改成min就对了
|