GO
IF OBJECT_ID('test_table') IS NOT NULL
DROP TABLE test_tableCREATE TABLE test_table
(
[sid] INT PRIMARY KEY IDENTITY(1,1),
[email] NVARCHAR(50),
[imei] NVARCHAR(50),
[lastseen] DATETIME
)GO
INSERT INTO test_table
SELECT '[email protected]', '000000000000000', '2013-01-14 04:41:12.000'
UNION ALL
SELECT '[email protected]', '000000000000000', '2013-01-13 22:22:30.000'
UNION ALL
SELECT '[email protected]', '000000000000000', '2013-01-13 04:03:13.000'
UNION ALL
SELECT '[email protected]', '6f52a254806809263ef9c426fbf77e890b173887', '2013-01-12 14:07:31.000'
UNION ALL
SELECT '[email protected]', '6f52a254806809263ef9c426fbf77e890b173887', '2013-01-11 15:05:04.000'
UNION ALL
SELECT '[email protected]', '868655000382418', '2013-01-13 17:01:48.000'
UNION ALL
SELECT '[email protected]', '868655000382418', '2013-01-12 18:29:45.000'
SELECT * FROM test_table/*
sid email imei lastseen
----------- -------------------------------------------------- -------------------------------------------------- -----------------------
1 [email protected] 000000000000000 2013-01-14 04:41:12.000
2 [email protected] 000000000000000 2013-01-13 22:22:30.000
3 [email protected] 000000000000000 2013-01-13 04:03:13.000
4 [email protected] 6f52a254806809263ef9c426fbf77e890b173887 2013-01-12 14:07:31.000
5 [email protected] 6f52a254806809263ef9c426fbf77e890b173887 2013-01-11 15:05:04.000
6 [email protected] 868655000382418 2013-01-13 17:01:48.000
7 [email protected] 868655000382418 2013-01-12 18:29:45.000
*/--我想要的结果
/*
sid email imei lastseen
1 [email protected] 000000000000000 2013-01-14 04:41:12.000
4 [email protected] 6f52a254806809263ef9c426fbf77e890b173887 2013-01-12 14:07:31.000
6 [email protected] 868655000382418 2013-01-13 17:01:48.000
*/能给出思路或代码,小弟感激不尽!
sql
GO
IF OBJECT_ID('test_table') IS NOT NULL
DROP TABLE test_table
CREATE TABLE test_table
(
[sid] INT PRIMARY KEY IDENTITY(1,1),
[email] NVARCHAR(50),
[imei] NVARCHAR(50),
[lastseen] DATETIME
)
GO
INSERT INTO test_table
SELECT '[email protected]', '000000000000000', '2013-01-14 04:41:12.000'
UNION ALL
SELECT '[email protected]', '000000000000000', '2013-01-13 22:22:30.000'
UNION ALL
SELECT '[email protected]', '000000000000000', '2013-01-13 04:03:13.000'
UNION ALL
SELECT '[email protected]', '6f52a254806809263ef9c426fbf77e890b173887', '2013-01-12 14:07:31.000'
UNION ALL
SELECT '[email protected]', '6f52a254806809263ef9c426fbf77e890b173887', '2013-01-11 15:05:04.000'
UNION ALL
SELECT '[email protected]', '868655000382418', '2013-01-13 17:01:48.000'
UNION ALL
SELECT '[email protected]', '868655000382418', '2013-01-12 18:29:45.000'
select *
from (
SELECT *,row_number() over(partition by imei order by lastseen desc) as num
FROM test_table
) t where num=1
/*
sid email imei lastseen
----------- -------------------------------------------------- -------------------------------------------------- -----------------------
1 [email protected] 000000000000000 2013-01-14 04:41:12.000
2 [email protected] 000000000000000 2013-01-13 22:22:30.000
3 [email protected] 000000000000000 2013-01-13 04:03:13.000
4 [email protected] 6f52a254806809263ef9c426fbf77e890b173887 2013-01-12 14:07:31.000
5 [email protected] 6f52a254806809263ef9c426fbf77e890b173887 2013-01-11 15:05:04.000
6 [email protected] 868655000382418 2013-01-13 17:01:48.000
7 [email protected] 868655000382418 2013-01-12 18:29:45.000
*/
--我想要的结果
/*
sid email imei lastseen
1 [email protected] 000000000000000 2013-01-14 04:41:12.000
4 [email protected] 6f52a254806809263ef9c426fbf77e890b173887 2013-01-12 14:07:31.000
6 [email protected] 868655000382418 2013-01-13 17:01:48.000
*/
select a.* from test_table a
join
(
select [imei],max([lastseen]) as [lastseen]from test_table group by [imei]
)b on a.imei = b.imei and a.lastseen =b.lastseen
order by a.imei
SELECT *
FROM test_table a
WHERE EXISTS ( SELECT 1
FROM ( SELECT --email ,
imei ,
MAX(lastseen) lastseen
FROM test_table
GROUP BY --email --,
imei
) b
WHERE --a.email = b.email
--AND
a.imei = b.imei
AND a.lastseen = b.lastseen )
【guguda2008】【zc10151】【DBA_Huangzj】
SELECT * FROM Test_Table AS a
WHERE NOT EXISTS(SELECT 1 FROM Test_Table AS x
WHERE x.imei=a.imei
AND x.lastseen>a.lastseen
)