表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 ...非常感谢您的帮助......
答案 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;
这是一个通用的解决方案,可以在流行的数据库中使用。也 有时比在表现中应用功能更好。