从mySQL获取排序的不同列表

时间:2010-04-29 08:00:08

标签: mysql

目标

我想获得一个由最近更改的FID排序的唯一FID列表。在此示例表中,它应按150, 194, 122

的顺序返回FID

示例数据

ID    FID    changeDate
----------------------------------------------
1     194    2010-04-01
2     122    2010-04-02
3     194    2010-04-03
4     150    2010-04-04

我的尝试

我认为不同并且顺序会做的伎俩。我最初尝试过:

SELECT distinct `FID` FROM `tblHistory` WHERE 1 ORDER BY changeDate desc
# Returns 150, 122, 194

使用GROUP BY具有相同的结果。我只是一个SQL爱好者,而且我有点挂了。似乎正在发生的是聚合函数找到每个函数的第一个匹配项,然后执行排序。

有没有办法可以直接从mySQL获得我想要的结果,还是我必须抓取所有数据然后在PHP中对其进行排序?

3 个答案:

答案 0 :(得分:1)

这对我有用:

SELECT FID
FROM tblHistory
GROUP BY FID
ORDER BY MAX(changeDate) DESC;

答案 1 :(得分:0)

好吧,自从我问过这个问题以来,我一直在网站上阅读问题,并提出了一个似乎有效的答案,尽管我希望其他人可能会以更简单的方式阐明:

SELECT t1.FID, t1.CD
FROM (
  SELECT FID, max(changeDate) as CD
  FROM sorted
  GROUP BY FID
) as t1 
WHERE 1 
order by t1.CD desc

似乎能得到我期望的结果。直到几分钟之前我才知道子查询存在。我是一个真正的SQL新手。

答案 2 :(得分:0)

select * from tbl A 
where changeDate = 
    (select max(changeDate) from tbl where tbl.fid = A.fid)
order by changeDate desc