如何在mySQL中获取colUmn属于TimeStamp类型的max(colUmn)值

时间:2011-03-10 07:31:38

标签: php mysql database

我有以下表结构 enter image description here 并在此表中包含以下数据 enter image description here 现在我想以这样的方式进行查询,以便我可以拥有所有列的值+特定game_id的max(currenttime)值。

我正在运行以下查询 SELECT _id,game_id,inning_id,scoretype,oponentonescore,oponenttwoscore,currenttime,MAX(currenttime)AS latest FROM game_scores WHERE game_id ='2268'

因此我只得到一行,如下面的结果 enter image description here 但我想要所有符合条件的行(即游戏ID 2268)

如何撰写Query以实现此目的?

提前致谢

3 个答案:

答案 0 :(得分:2)

您的MAX()是聚合类型函数,并为多行获取一个值。

所以删除它并使用PHP这样的东西......

$maxTime = 0;

foreach($rows as $row) {
   $maxTime = max($maxTime, strtotime($row['currenttime']));
}

...或运行另一个查询,虽然上面应该足够了......

SELECT MAX(`currenttime`) AS `latest`
  FROM `game_scores`
 WHERE `game_id` = '2268'

在您方便的OMG Ponies 样式中进行格式化。

答案 1 :(得分:1)

对不起,我实际上没有对此进行测试,但也许这样的事情可以解决这个问题:

SELECT
    _id,
    game_id,
    inning_id,
    scoretype,
    oponentonescore,
    oponenttwoscore,
    currenttime,
    latest
FROM
    game_scores
JOIN (
    SELECT
        MAX(currenttime) AS latest
    FROM
        game_scores
    WHERE
        game_id = '2268'
) AS latest_calculation
WHERE game_id = '2268';

虽然这个解决方案在数据库上比在应用程序上更重,但是在从数据库返回查询之后弄清楚它(如alex建议的那样)。

答案 2 :(得分:0)

此查询行中的某些内容将执行所需的操作。没试过。

 SELECT _id, game_id, inning_id, scoretype, oponentonescore, oponenttwoscore,
    currenttime,maxtime from game_scores OUTER join (SELECT _id,MAX(currenttime)
    as maxtime from game_scores) as t on t._id = game_scores._id  where game_id = '2268';