Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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
Php 从列唯一的数据库中获取值并添加条件_Php_Sql_Sql Server 2000 - Fatal编程技术网

Php 从列唯一的数据库中获取值并添加条件

Php 从列唯一的数据库中获取值并添加条件,php,sql,sql-server-2000,Php,Sql,Sql Server 2000,我需要一个高级SQL查询MSSQL 2000的帮助 我有一个名为Result的表格,列出了田径100米和200米的比赛时间。一个跑步者可以有几次比赛,但我只想展示每个项目中每个跑步者的最佳时间 结果表包含五列,结果id、运动员id、结果时间、结果日期、事件代码。因此,当我列出值时,运动员id必须是唯一的,结果时间必须是最快的最低值。另外,我希望能够选择event_code是=1还是=2,因为100米和200米的结果在同一个表中是混合的 几天前我问了一个类似的问题,但没有事件代码条件 这就是我们得

我需要一个高级SQL查询MSSQL 2000的帮助

我有一个名为Result的表格,列出了田径100米和200米的比赛时间。一个跑步者可以有几次比赛,但我只想展示每个项目中每个跑步者的最佳时间

结果表包含五列,结果id、运动员id、结果时间、结果日期、事件代码。因此,当我列出值时,运动员id必须是唯一的,结果时间必须是最快的最低值。另外,我希望能够选择event_code是=1还是=2,因为100米和200米的结果在同一个表中是混合的

几天前我问了一个类似的问题,但没有事件代码条件

这就是我们得出的答案

select r.*
from result r
inner join (
    select athelete_id, min(result_time) as FastestTime
    from result
    group by athelete_id
) rm on r.athelete_id = rm.athelete_id and r.result_time = rm.FastestTime
您知道如何将事件代码条件添加到此代码段吗?

试试以下方法:

选择r* 从结果r 内连接 选择删除id、最小结果时间作为最快时间 结果 其中事件代码=1 按删除id分组 r.athelete\u id=rm.athelete\u id,r.result\u time=rm.FastestTime
在子查询的输出中包括事件代码。然后,您可以同时显示所有事件,或在外部where子句中选择它们:

select r.*
from result r inner join
     (select athlete_id, event_code, min(result_time) as FastestTime
      from result
      group by athlete_id, event_code
     ) rm
     on r.athelete_id = rm.athlete_id and
        r.result_time = rm.FastestTime and
        r.event_code = rm.event_code
-- where event_code = xx

最后一行是可选的WHERE子句,以防一次只需要一个事件。

谢谢!似乎有效,但我发现另一种方法更简单