sql语法问提(100分)

  • 主题发起人 主题发起人 why_119
  • 开始时间 开始时间
W

why_119

Unregistered / Unconfirmed
GUEST, unregistred user!
过滤
id na userid date
10 aaa 3 2006-1-1
11 bbb 3 2006-2-3
12 ccc 4 2006-1-5
13 ddd 4 2006-1-6
14 eee 5 ..
15 ggg 6 ..
过滤userid一样的.两个都是3.就要一个.按日期最新的提取.
userid 4也是一样就要一个4 .也这按日最新的提
sql语句应如何写?
 
用临时表啊,sql语句中可以定义变量为table类型的。
 
select A.* from tb A, (select userid, max(date) date from tb group by userid) B
where A.userid = B.userid and A.date = B.date
 
create table #temp
(id varchar(10),
na varchar(20),
userid varchar(20),
date datetime
)


insert into #temp values('10','aaa','3','2006-1-1')
insert into #temp values('11','bbb','3','2006-2-3')
insert into #temp values('12','ccc','4','2006-1-5')
insert into #temp values('13','ddd','4','2006-1-6')


select a.* from #temp a ,(select userid,max(date) date from #temp group by userid) b where a.userid=b.userid and a.date=b.date

测试通过.
 
厉害啊,赶快来学习
 
就这样就行了,何必如此费神,效率上去了:
select id,na,min(userid) as userid,max(date)
from table
group by id,na
 
楼上你方法不行,人家是想过滤的,你的语句不能过滤,你可以试试.
 
要能过滤才行,
 
问题:
"过滤
id na userid date
10 aaa 3 2006-1-1
11 bbb 3 2006-2-3
12 ccc 4 2006-1-5
13 ddd 4 2006-1-6
14 eee 5 ..
15 ggg 6 ..
过滤userid一样的.两个都是3.就要一个.按日期最新的提取.
userid 4也是一样就要一个4 .也这按日最新的提
[blue]sql语句应如何写?[/blue]"

不是SQL语句吗?理解不一样吧?呵呵
 
来自:hongxing_dl, 时间:2006-11-9 11:51:08, ID:3618630
就这样就行了,何必如此费神,效率上去了:
select id,na,min(userid) as userid,max(date)
from table
group by id,na
这个方法我没有在SQL里运行,逻辑上我就很难理解。看来真的是老了
 
楼主是想把USERID重复的记录去掉,只保留DATE最新的一条记录就行了.
 
楼主是想把USERID重复的记录去掉,只保留DATE最新的一条记录就行了.

我就是这个新思.

大家帮我想想.
 
DELETE Tablename From tablename Left Join (Select Min(ID) as ID, na, userid ,data From Tablename Group By userid) as T On (tablename.ID = T.ID) Where T.ID Is Null
 
备份好数据库!
 
楼主:我的语句已经可以了,我测试通过了.你没试吗
 
没注意楼主的id,na也不一致,失败呀```汗```
那么这句应该是正解了:
select A.*
from table1 A,
(select userid,max(date) date
from table1
group by userid) B
where A.userid = B.userid and A.date = B.date
 
想不出来,头都大了。。顶一下,,,
 
CREATE TABLE tem_table(id integer, na varchar(50), userid integer, in_date datetime)

INSERT INTO tem_table (id,na,userid, in_date)
SELECT A.* FROM TABLE3 A INNER JOIN
(SELECT useid, MAX(in_date) in_date FROM table3 GROUP BY useid) B
ON A.useid = B.useid AND A.in_date = B.in_date ORDER BY A.id


DELETE FROM table3

INSERT INTO table3(name,useid,in_date) SELECT na,userid,in_date FROM tem_table

DROP TABLE tem_table

完全通过了,是纯SQL语句实现的,给分吧。
 
hongxing_dl的语句写得漂亮!赞一个并收藏之。
select A.*
from table1 A,
(select userid,max(date) date
from table1
group by userid) B
where A.userid = B.userid and A.date = B.date
 
赞 hongxing_dl
 
后退
顶部