try: select a.* from tbname a, (select max(rowid) from tbname b group by colA) t where a.rowid=t.rowid;
select col1,max(col2),max(col3) from table group by col1
select a.* from table_name a, (select max(rowid) from table_name b group by col1) b where a.rowid = b.rowid;
每一条记录都会有一个rowid,独一无二的. 所以只要找到rowid就可以了. 所以: select * from table_name where rowid in (select max(rowid) from table_name group by col1)
SELECT t.* FROM tablename t WHERE ROWID=(SELECT MIN(ROWID) FROM tablename WHERE tablename.col=t.col GROUP BY col)
换一种容易看懂的写法:select a.* from tbname a where a.rowid = (select max(rowid) from tbname b where a.col1=b.col1 )
select * from table where rowid in (select max(rowid) from table group by cola,colb,colc,cold);
上面错了 try:select * from table where rowid in (select max(rowid) from table group by cola);
既然除了第一个字段唯一,其余的数据无所谓,为什么要用到rowid呢?直接用 select col1,max(col2),max(col3)............ from talbe_name group by col1不是很好吗? 当然不一定是max,只要是聚合函数就可以了。
to armyyd(不会游泳的猫)如果是下面这样的情况呢AAAA 1OO 33.1 A AAAA 1O3 32.1 A AAAB 101 33.2 A AAAB 102 33.3 B 那你的语句将会得到什么结果呢
select * from ( select t.* ,row_number() over (partition by t.a order by t.b ) ty from table_name t) tt where tt.ty<2
回复人: qiaozhiwei(乔) ( ) 信誉:100 select col_1,col_2,col_3,col_4 from tb_name group by col_1 回复人: bzszp(SongZip) ( ) 信誉:149 try: select a.* from tbname a, (select max(rowid) from tbname b group by colA) t where a.rowid=t.rowid; _____________________________________________________________________________________ 上边两种方法都是错的, 第一个 不符合group by的用法 第二个 取不出rowid 。
回复人: bluelamb(bluelamb) ( ) 信誉:100 select col1,max(col2),max(col3) from table group by col1 回复人: GerryYang(轻尘) ( ) 信誉:100 每一条记录都会有一个rowid,独一无二的. 所以只要找到rowid就可以了. 所以: select * from table_name where rowid in (select max(rowid) from table_name group by col1) ———————————————————————————————————————————— 这两种方法 小弟已测试 可以达到目的!
使用一个row_number函数就好了. select col1,col2,col3,col4 from ( select col1,col2,col3,col4, row_number() over (partition by col1 order by rowid ) rn from table ) where rn = 1;
回复人: bluelamb(bluelamb) ( ) 信誉:100 select col1,max(col2),max(col3) from table group by col1 回复人: GerryYang(轻尘) ( ) 信誉:100 每一条记录都会有一个rowid,独一无二的. 所以只要找到rowid就可以了. 所以: select * from table_name where rowid in (select max(rowid) from table_name group by col1) ———————————————————————————————————————————— 这两种方法 小弟已测试 可以达到目的!---------- 第一种方法是不可以的,因为你取到的并不一定是原表中的一条记录.
回复人: jametong(jametong) ( ) 信誉:100 使用一个row_number函数就好了. select col1,col2,col3,col4 from ( select col1,col2,col3,col4, row_number() over (partition by col1 order by rowid ) rn from table ) where rn = 1; _____________________________________________________________________这个也是可以的!!
to armyyd(不会游泳的猫)如果是下面这样的情况呢AAAA 1OO 33.1 A AAAA 1O3 32.1 A AAAB 101 33.2 A AAAB 102 33.3 B 那你的语句将会得到什么结果呢 是欠考虑了。 用通用的那种去除相同记录的办法就可以了。
select a.* from tbname a,
(select max(rowid) from tbname b group by colA) t
where a.rowid=t.rowid;
from table group by col1
from table_name a,
(select max(rowid) from table_name b group by col1) b
where a.rowid = b.rowid;
所以只要找到rowid就可以了.
所以:
select * from table_name where rowid in
(select max(rowid) from table_name group by col1)
from tbname a
where a.rowid = (select max(rowid)
from tbname b
where a.col1=b.col1
)
where rowid in (select max(rowid) from table group by cola,colb,colc,cold);
try:select * from table
where rowid in (select max(rowid) from table group by cola);
select col1,max(col2),max(col3)............ from talbe_name
group by col1不是很好吗?
当然不一定是max,只要是聚合函数就可以了。
AAAA 1O3 32.1 A
AAAB 101 33.2 A
AAAB 102 33.3 B
那你的语句将会得到什么结果呢
from (
select t.* ,row_number() over (partition by t.a order by t.b ) ty from table_name t) tt
where tt.ty<2
select col_1,col_2,col_3,col_4
from tb_name
group by col_1
回复人: bzszp(SongZip) ( ) 信誉:149
try:
select a.* from tbname a,
(select max(rowid) from tbname b group by colA) t
where a.rowid=t.rowid;
_____________________________________________________________________________________
上边两种方法都是错的, 第一个 不符合group by的用法 第二个 取不出rowid 。
select col1,max(col2),max(col3)
from table group by col1
回复人: GerryYang(轻尘) ( ) 信誉:100
每一条记录都会有一个rowid,独一无二的.
所以只要找到rowid就可以了.
所以:
select * from table_name where rowid in
(select max(rowid) from table_name group by col1)
————————————————————————————————————————————
这两种方法 小弟已测试 可以达到目的!
select col1,col2,col3,col4
from (
select col1,col2,col3,col4,
row_number() over (partition by col1 order by rowid ) rn
from table
)
where rn = 1;
select col1,max(col2),max(col3)
from table group by col1
回复人: GerryYang(轻尘) ( ) 信誉:100
每一条记录都会有一个rowid,独一无二的.
所以只要找到rowid就可以了.
所以:
select * from table_name where rowid in
(select max(rowid) from table_name group by col1)
————————————————————————————————————————————
这两种方法 小弟已测试 可以达到目的!----------
第一种方法是不可以的,因为你取到的并不一定是原表中的一条记录.
使用一个row_number函数就好了.
select col1,col2,col3,col4
from (
select col1,col2,col3,col4,
row_number() over (partition by col1 order by rowid ) rn
from table
)
where rn = 1;
_____________________________________________________________________这个也是可以的!!
to armyyd(不会游泳的猫)如果是下面这样的情况呢AAAA 1OO 33.1 A
AAAA 1O3 32.1 A
AAAB 101 33.2 A
AAAB 102 33.3 B
那你的语句将会得到什么结果呢
是欠考虑了。
用通用的那种去除相同记录的办法就可以了。