有一张表
t_testid int4, 主健
user_id int4,
visit_date timestamp要求输出id, user_id,visit_date ,但是user_id相同的记录并且visit_date里同一天的数据只输出当天时间最晚的一条,
而且, 排序是按 user_id 升序, visit_date 降序insert into t_test values(1, 13, timestamp '2007-4-12 09:30:21');
insert into t_test values(2, 13, timestamp '2007-4-12 12:31:32');
insert into t_test values(3, 13, timestamp '2007-4-12 23:11:00');
insert into t_test values(4, 13, timestamp '2007-5-23 07:41:42');
insert into t_test values(5, 15, timestamp '2007-4-12 23:51:52');
正确输出应该是
id user_id visit_date
4 13 2007-05-23 07:41:42
3 13 2007-04-12 23:11:00
5 15 2007-04-12 23:51:52谢谢
t_testid int4, 主健
user_id int4,
visit_date timestamp要求输出id, user_id,visit_date ,但是user_id相同的记录并且visit_date里同一天的数据只输出当天时间最晚的一条,
而且, 排序是按 user_id 升序, visit_date 降序insert into t_test values(1, 13, timestamp '2007-4-12 09:30:21');
insert into t_test values(2, 13, timestamp '2007-4-12 12:31:32');
insert into t_test values(3, 13, timestamp '2007-4-12 23:11:00');
insert into t_test values(4, 13, timestamp '2007-5-23 07:41:42');
insert into t_test values(5, 15, timestamp '2007-4-12 23:51:52');
正确输出应该是
id user_id visit_date
4 13 2007-05-23 07:41:42
3 13 2007-04-12 23:11:00
5 15 2007-04-12 23:51:52谢谢
解决方案 »
- 怎么用sql 语句在2个表中复制多字段的表?
- SQL2000注册问题
- 高手帮忙写个简单的存储过程
- 我对sql server内存进行了设置,配置了内存最大值1.5G,并从新启动了服务器.但问题是sql server占用的内存仍旧超过1.5G.
- 拆数据
- 请问各位一个SQL 6.5 的问题
- 如何在查询分析器中添加一个新用户?
- 急:ntext最大长度可达2G,但为什么我的SQL SERVER中的ntext,text的长度却是128字节(SQL SERVER2000)!
- 動態變量,如何做
- 关于在SQLServer中如何只取datetime型字段的日期值。
- 如何用sql触发器将一个表中的更新记录插入到access中?
- sql2005 修改表结构时超时
t.*
from
t_test t
where
not exists(select 1 from t_test where user_id=t.user_id and datediff(day,visit_date,t.visit_date)=0 and visit_date>t.visit_date)
t.*
from
t_test t
where
t.id=(select top 1 id from t_test where user_id=t.user_id and datediff(day,visit_date,t.visit_date)=0 order by visit_date desc)
t.*
from
t_test t
where
t.visit_date=(select max(visit_date) from t_test where user_id=t.user_id and datediff(day,visit_date,t.visit_date)=0)
create table #t(id int,[user_id] int,visit_date datetime)insert into #t values(1, 13, '2007-4-12 09:30:21');
insert into #t values(2, 13, '2007-4-12 12:31:32');
insert into #t values(3, 13, '2007-4-12 23:11:00');
insert into #t values(4, 13, '2007-5-23 07:41:42');
insert into #t values(5, 15, '2007-4-12 23:51:52');
select *
from #t AS a
where id = (select top 1 id from #t where datediff(d,visit_date,a.visit_date)=0 and [user_id]=a.user_id order by visit_date desc)
order by [user_id] ,visit_date descdrop table #t
create table #t(id int,[user_id] int,visit_date datetime)insert into #t values(1, 13, '2007-4-12 09:30:21');
insert into #t values(2, 13, '2007-4-12 12:31:32');
insert into #t values(3, 13, '2007-4-12 23:11:00');
insert into #t values(4, 13, '2007-5-23 07:41:42');
insert into #t values(5, 15, '2007-4-12 23:51:52');
select *
from #t AS a
where id =
(
select top 1 id
from #t
where datediff(d,visit_date,a.visit_date)=0
and [user_id]=a.user_id
order by visit_date desc)
order by [user_id] ,visit_date descdrop table #t
A.*
From
t_test A
Inner Join
(Select [user_id], Max(visit_date) As visit_date From t_test Group By [user_id]) B
On A.[user_id] = B.[user_id] And A.visit_date = B.visit_date
Order By [user_id], visit_date Desc
create table #t(id int,[user_id] int,visit_date datetime)insert into #t values(1, 13, '2007-4-12 09:30:21');
insert into #t values(2, 13, '2007-4-12 12:31:32');
insert into #t values(3, 13, '2007-4-12 23:11:00');
insert into #t values(4, 13, '2007-5-23 07:41:42');
insert into #t values(5, 15, '2007-4-12 23:51:52');Select
A.*
From
#t A
Inner Join
(Select [user_id], Max(visit_date) As visit_date From #t Group By [user_id], Convert(Varchar(10), visit_date, 120) ) B
On A.[user_id] = B.[user_id] And A.visit_date = B.visit_date
Order By A.[user_id], A.visit_date DescGO
Drop Table #t
insert into #t values(2, 13, '2007-4-12 12:31:32');
insert into #t values(3, 13, '2007-4-12 23:11:00');
insert into #t values(4, 13, '2007-5-23 07:41:42');
insert into #t values(5, 15, '2007-4-12 23:51:52');Select
A.*
From
#t A
Inner Join
(Select [user_id], Max(visit_date) As visit_date From #t Group By [user_id], Convert(Varchar(10), visit_date, 120) ) B
On A.[user_id] = B.[user_id] And A.visit_date = B.visit_date
Order By A.[user_id], A.visit_date DescGO
Drop Table #t
--Result
/*
id user_id visit_date
4 13 2007-05-23 07:41:42.000
3 13 2007-04-12 23:11:00.000
5 15 2007-04-12 23:51:52.000
*/
insert into #t values(2, 13, '2007-4-12 12:31:32');
insert into #t values(3, 13, '2007-4-12 23:11:00');
insert into #t values(4, 13, '2007-5-23 07:41:42');
insert into #t values(5, 15, '2007-4-12 23:51:52');Select
Count(A.id) As Count
From
#t A
Inner Join
(Select [user_id], Max(visit_date) As visit_date From #t Group By [user_id], Convert(Varchar(10), visit_date, 120) ) B
On A.[user_id] = B.[user_id] And A.visit_date = B.visit_date
GO
Drop Table #t
--Result
/*
Count
3
*/