我表格中的每一行都是指定时间的电台状态。随着时间的推移,它有很多变化。水流,温度等。我希望能够从每个电台返回最新的记录。并非所有的电台都同时更新,因此我无法抓住最后几条记录并知道我拥有它们。
Flow Sortdate Station
-----------------------------------------
164 2013-07-19 11502940
520 2013-07-19 11502500
164 2013-07-20 11502940
520 2013-07-20 11502500
164 2013-07-21 11502940
520 2013-07-21 11502500
我认为这应该有用。
select station, sortdate, flow from dailymean
group by Station
order by sortdate DESC
没有。我看过这里有人有这样的事情。
select f.station, f.date, f.flow from dailymean f,dailymean second on second.station=f.station
where f.station>second.station,
group by f.Station
order by f.sortdate DESC
这将会发布最早的记录集,但会返回所有其他记录,而不仅仅是最新记录。
为了清楚起见,我需要的不仅仅是上次更新的日期。从最后一次更新每个电台时起,我还需要水流和许多其他东西。我正在使用SQLite。
答案 0 :(得分:2)
基本上你想要的是表中所有列,其中sortdate对于该站是最大的。在sql中执行此操作有点混乱,您可以在此处看到:MySQL SELECT unique column where other column is max
如果我没有犯任何错误,您的架构的查询将是
SELECT *
FROM dailymean
WHERE (station, sortdate) IN
(SELECT station, MAX(sortdate)
FROM dailymean
GROUP BY station)
答案 1 :(得分:2)
我会这样做:
SELECT
dailymean.Station,
dailymean.Flow,
dailymean.Sortdate
FROM
dailymean
INNER JOIN (
SELECT Station, MAX(Sortdate) AS maxDate FROM dailymean GROUP BY Station
) AS Tmp ON dailymean.Station = Tmp.Station
AND dailymean.Sortdate = Tmp.maxDate