SQL2005+基于内部联接中表上的datetime返回不同的结果
我有一点时间,我想做的很简单,我想我只是在寻找错误的解决方案。我只想返回一个根据相关表的日期戳排序的表 即: 我希望返回根据第二个表中的日期排序的第一个表,因此我的结果应该是SQL2005+基于内部联接中表上的datetime返回不同的结果,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,我有一点时间,我想做的很简单,我想我只是在寻找错误的解决方案。我只想返回一个根据相关表的日期戳排序的表 即: 我希望返回根据第二个表中的日期排序的第一个表,因此我的结果应该是 201 Other Why 200 MyStuff OK 202 Flat So 我试过做一个内部连接,但是我选择的是distinct,我必须包括来自第二个表的日期,我在这个表上排序,因此我在返回表上得到了重复的pk 请帮助我理解我在这里犯的新手错误。由于表1中的每一行在表2中都有多行,因此您必须决定如何
201 Other Why
200 MyStuff OK
202 Flat So
我试过做一个内部连接,但是我选择的是distinct,我必须包括来自第二个表的日期,我在这个表上排序,因此我在返回表上得到了重复的pk
请帮助我理解我在这里犯的新手错误。由于表1中的每一行在表2中都有多行,因此您必须决定如何处理排序中的日期 假设您要根据最大日期戳进行排序,可以执行以下操作:
select table1.*, t2.max_ds
from table1
inner join (select id, max(datestamp) as max_ds from table2 group by id) t2
on t2.id = table1.id
order by t2.max_ds
显然,您必须添加一些空处理等等,但这应该会让您开始。这让我朝着我需要的方向思考,谢谢。实际上,我最终做了一个子查询,并以此进行排序。
select table1.*, t2.max_ds
from table1
inner join (select id, max(datestamp) as max_ds from table2 group by id) t2
on t2.id = table1.id
order by t2.max_ds