不会分组吗?

时间:2014-01-14 18:58:40

标签: php mysql

我面临一个非常奇怪的问题,我不能分组。如果我这样做,它将不会显示“最佳时间”。这有点奇怪。

这是可行的SQL字符串(但它显示相同的测验4次,它不应该!)

SELECT distinct a.quiz_id, a.time, b.end, b.images, b.prize_title 
FROM entries a, quiz b 
WHERE a.quiz_id = b.id AND a.member = '".$_SESSION['id']."' 
ORDER BY a.time ASC

输出屏幕:http://imgur.com/mOfBK3q

这显示不是最佳时间(最快时间=> ASC)

SELECT distinct a.quiz_id, a.time, b.end, b.images, b.prize_title 
FROM entries a, quiz b 
WHERE a.quiz_id = b.id AND a.member = '".$_SESSION['id']."' 
GROUP BY a.quiz_id 
ORDER BY a.time ASC

输出屏幕:http://imgur.com/QiNQZY4

列“a.time”是毫秒,列是DOUBLE。

3 个答案:

答案 0 :(得分:1)

尝试使用HAVING代替WHERE

在同一查询中避免使用DISTINCTGROUP BY(您只需要一个或另一个)。

答案 1 :(得分:0)

由于GROUP BYORDER BY之前应用了,因此查询无法按预期运行。它只会在分组后对结果进行排序 - 而且只剩下一个结果。

尝试以下方法:

SELECT a.quiz_id, a.time, b.end, b.images, b.prize_title
FROM entries a
JOIN quiz b ON a.quiz_id = b.id
ORDER BY a.time ASC
LIMIT 1

答案 2 :(得分:0)

尝试这样的事情。

SELECT MIN(a.time), a.quiz_id, a.time, b.end, b.images, 
b.prize_title FROM entries a, quiz b WHERE a.quiz_id = b.id AND 
a.member = '".$_SESSION['id']."' GROUP BY a.quiz_id