表如下:
id qq email tel time
01 11 d@d.c 256 17:0
02 11 c@c.c 256 18:0
03 12 d@d.c 356 19:0
04 12 d@d.c 356 19:0
05 11 d@d.c 356 19:0
06 11 d@d.c 356 19:0
07 11 d@d.c 356 19:0
08 10 t@t.t 888 23:0
09 19 q@q.q 999 11:0
查询结果为:
01 11 d@d.c 256 17:0
08 10 t@t.t 888 23:0
09 19 q@q.q 999 11:0
Create table T(id int,qq int,email varchar(10),tel int,time varchar(10))
insert into T
select 1, 11, 'd@d.c', 256, '17:0'
union all select 2, 11, 'c@c.c', 256, '18:0'
union all select 3, 12, 'd@d.c', 356, '19:0'
union all select 4, 12, 'd@d.c', 356, '19:0'
union all select 5, 11, 'd@d.c', 356, '19:0'
union all select 6, 11, 'd@d.c', 356, '19:0'
union all select 7, 11, 'd@d.c', 356, '19:0'
union all select 8, 10, 't@t.t', 888, '23:0'
union all select 9, 19, 'q@q.q', 999, '11:0'
GO
select *
from T as A
where not exists(select 1 from T
where (qq=A.qq
or email=A.email
or tel=A.tel
)
and id<A.id)
/*
id qq email tel time
----------- ----------- ---------- ----------- ----------
1 11 d@d.c 256 17:0
8 10 t@t.t 888 23:0
9 19 q@q.q 999 11:0
*/
Drop table T
---------------------------------
DECLARE @TB TABLE(id VARCHAR(2), qq INT, email VARCHAR(5), tel INT, time VARCHAR(4))
INSERT @TB
SELECT '01', 11, 'd@d.c', 256, '17:0' UNION ALL
SELECT '02', 11, 'c@c.c', 256, '18:0' UNION ALL
SELECT '03', 12, 'd@d.c', 356, '19:0' UNION ALL
SELECT '04', 12, 'd@d.c', 356, '19:0' UNION ALL
SELECT '05', 11, 'd@d.c', 356, '19:0' UNION ALL
SELECT '06', 11, 'd@d.c', 356, '19:0' UNION ALL
SELECT '07', 11, 'd@d.c', 356, '19:0' UNION ALL
SELECT '08', 10, 't@t.t', 888, '23:0' UNION ALL
SELECT '09', 19, 'q@q.q', 999, '11:0'
SELECT * FROM @TB T
WHERE (NOT EXISTS(SELECT 1 FROM @TB WHERE qq=T.qq AND time<T.time))
AND (NOT EXISTS(SELECT 1 FROM @TB WHERE email=T.email AND time<T.time))
AND (NOT EXISTS(SELECT 1 FROM @TB WHERE tel=T.tel AND time<T.time))