将两个表仅比较另一个表上要考虑的最大ID

时间:2015-04-04 21:00:39

标签: sql sql-server tsql

表1

id rollnumber名称
1 4 John Doe

表2

id rollnumber名称
1 4 Jane Doe
2 4 John Doe

这是我的查询声明..
从表1中选择* 内连接表2 在table2.rollnumber = table1.rollnumber
table1.Name<> table2.Name

我的目标是将table1与table2的最高ID进行比较,并参考rollnumber,在这种情况下,此查询的结果应为none ...非常感谢您的帮助......

3 个答案:

答案 0 :(得分:0)

尝试:

select * from table1 t1
cross apply ( select * from (select top 1 * from table2 t2 where t1.rn = t2.rn order by t2.id desc) t where t.name <> t1.name) c

答案 1 :(得分:0)

你可以试试这个:

DECLARE @table1 TABLE (ID INT, RollNumber INT, Name VARCHAR(100))
DECLARE @table2 TABLE (ID INT, RollNumber INT, Name VARCHAR(100))

INSERT INTO @table1 VALUES(1,4,'John Doe')

INSERT INTO @table2 
VALUES  (1,4,'Jane Doe'),
        (2,4,'John Doe');

SELECT  A.RollNumber,
        A.ID,
        A.Name,
        C.max_id
FROM @table1 A
CROSS APPLY (SELECT MAX(ID) FROM @table2 B WHERE A.RollNumber = B.RollNumber) C(max_id)
WHERE A.ID = C.max_id

答案 2 :(得分:0)

Select * from table1 a
join (select max(Id) id, rollnumber,max(name) name from table2 
group by rollnumber) t on t.id = a.id and t.rollnumber = a.rollnumber and t.name <> a.name;
  

这是一个通用的解决方案,可以在流行的数据库中使用。也   有时比在表现中应用功能更好。