我有以下表结构 并在此表中包含以下数据 现在我想以这样的方式进行查询,以便我可以拥有所有列的值+特定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'
因此我只得到一行,如下面的结果 但我想要所有符合条件的行(即游戏ID 2268)
如何撰写Query以实现此目的?
提前致谢
答案 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';