日期:2014-05-18 浏览次数:20571 次
SELECT * FROM [a] LEFT JOIN [b] AS t ON a.id=t.id AND NOT EXISTS(SELECT 1 FROM b WHERE [id]=t.[id] AND [date]>t.[date])
------解决方案--------------------
SELECT * FROM ta a INNER JOIN tb b ON a.uid = b.uid WHERE NOT EXISTS ( SELECT 1 FROM tb WHERE uid = b.uid AND [date] > t.[date] )
------解决方案--------------------
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'A') BEGIN DROP TABLE A END GO CREATE TABLE A ( ID VARCHAR(10), Name VARCHAR(10) ) GO INSERT INTO A SELECT '3711021994','张三' UNION SELECT '3711021989','李四' GO IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'B') BEGIN DROP TABLE B END GO CREATE TABLE B ( ID VARCHAR(10), Sex VARCHAR(10), Gra VARCHAR(10), Date VARCHAR(10) ) GO INSERT INTO B SELECT '3711021994', '男', '2008毕业', '2012.06.27' UNION SELECT '3711021994', '女', '2010毕业', '2012.06.28' GO SELECT A.ID, A.Name, Sex, Gra, Date FROM A LEFT OUTER JOIN ( select ID, Sex, Gra, Date from B AS t where (select count(*) from B where ID=t.ID and Date>t.Date )<1) AS C ON A.ID = C.ID
------解决方案--------------------
--> 测试数据:[A] IF OBJECT_ID('[A]') IS NOT NULL DROP TABLE [A] GO CREATE TABLE [A]([id] BIGINT,[name] VARCHAR(4)) INSERT [A] SELECT 3711021994,'张三' UNION ALL SELECT 3711021989,'李四' --> 测试数据:[B] IF OBJECT_ID('[B]') IS NOT NULL DROP TABLE [B] GO CREATE TABLE [B]([id] BIGINT,[sex] VARCHAR(2),[graduate] VARCHAR(8),[date] DATETIME) INSERT [B] SELECT 3711021994,'男','2008毕业','2012.06.27' UNION ALL SELECT 3711021994,'女','2010毕业','2012.06.28' --------------开始查询-------------------------- SELECT * FROM [a] LEFT JOIN [b] AS t ON a.id=t.id AND NOT EXISTS(SELECT 1 FROM b WHERE [id]=t.[id] AND [date]>t.[date]) ----------------结果---------------------------- /* id name id sex graduate date -------------------- ---- -------------------- ---- -------- ----------------------- 3711021994 张三 3711021994 女 2010毕业 2012-06-28 00:00:00.000 3711021989 李四 NULL NULL NULL NULL (2 行受影响) */