Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL2005+基于内部联接中表上的datetime返回不同的结果_Sql_Sql Server_Sql Server 2005_Tsql - Fatal编程技术网

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