SQL求助:对一个字段里重复数据,取出不同数据的前两个
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL求助:对一个字段里重复数据,取出不同数据的前两个相关的知识,希望对你有一定的参考价值。
表orderdate如下 求取出 o_id customer 1 bush 3 bush 2 carter 6 carter 5 adams 就是每个custmer取出前两个
我的目的是为了在一个字段里相同的数据只取出前2个其他的忽略掉
select IDENTITY(int,1,1)as xh,customer into #temp1 from orderdate group by customer having count(*)>1
select * into #temp2 from orderdate where customer in (select customer from #temp1 )
select * into #temp3 from #temp2 left join #temp1 where #temp2. customer =#temp1.customer
--先将重复的取出来
create table B(
o_id int,
custmer varchar(255)
)
declare
@X int,
@Y int
select @X=min(xh) from #temp1
select @Y=max(xh) from #temp1
while @X<=@Y
insert into B
select top 2 o_id,custmer from #temp3 where xh=@X
set @X=@X+1
end
select * from B
drop table #temp1
drop table #temp2
drop table #temp3
drop table B 参考技术B select * from (
select *, ROW_NUMBER() over(PARTITION BY customer order by customer ) dd from orderdate) as ff where dd<=2追问
PARTITION BY oracle函数? 能介绍下思路吗 不胜感激
追答这条语句是在SQL中使用的,你的编译环境是oracle?
追问我在mysql下查询,报错
SELECT *, ROW_NUMBER() over(PARTITION BY customer ORDER BY customer )dd FROM orderdate这句话报错
哦,oracle不支持ROW_NUMBER() 这个函数,我再想想。
参考技术C select Customer from Orderswhere Customer='Adams' or Customer='Carter' or OrderPrice>=700
order by Customer desc
我暂时只能想到这样取巧的方法,我也试过了是可以的。不知道是不是你想要的结果。
数据库sql,重复字段只取其中一行
数据库中的sql,重复字段只取其中一行
格式 :
select * from [表] where 其他字段 in (select 函数(其他字段) from [表] group by 相同字段)
示例如下:
从test表中,取出 username字段相同的记录中,id最大的那一行数据。
select * from test where id in (select max(id) from test group by username )
以上是关于SQL求助:对一个字段里重复数据,取出不同数据的前两个的主要内容,如果未能解决你的问题,请参考以下文章