mysql选择不同但最新的行

时间:2014-04-06 03:42:00

标签: mysql sql

如何选择最新的分数'从表格中为每个不同的网站'存在吗?

例如:

site |   date   | score
 a   | 20140101 |  10
 a   | 20140102 |  8
 b   | 20140103 |  11
 b   | 20140202 |  9

我想为ab返回一个结果,但只返回其最新条目(按日期)。

 a   | 20140102 |  8
 b   | 20140202 |  9

我知道如何按网站分组,或选择不同的网站,但不知道如何将其缩小到最新日期。

编辑:对于数千个不同的网站,这应该是动态的。

1 个答案:

答案 0 :(得分:3)

你可以用联盟

来做
(SELECT 
    site,date,score 
FROM
    `table`
WHERE 
    site = 'a'
ORDER BY date DESC
LIMIT 0,1)
UNION
(SELECT 
    site,date,score 
FROM
    `table`
WHERE 
    site = 'b'
ORDER BY date DESC
LIMIT 0,1)

如果你不想写UNION

,会有点复杂
SELECT 
    t.site, t.date, t.score
FROM 
    `table` t
    JOIN (
       SELECT ti.site,MAX(ti.date) AS dt
       FROM `table` ti
       GROUP BY ti.site
    ) t2 ON t2.site = t.site and t2.dt = t.date