![](/img/trans.png)
[英]Get values of first record and last record by date in mysql subquery
[英]How to get first record and last record in a date
我有一個以下格式構成的表:
**ID StationID Status UpdateTime**
1 1 xxxx 2014-09-25 00:01:05
2 1 xxxy 2014-09-25 01:05:18
3 1 xxxz 2014-09-25 09:23:05
4 1 xxxx 2014-09-25 20:01:05
5 1 xxxz 2014-09-25 23:21:34
6 1 xxxz 2014-09-26 00:01:00
7 1 xxxx 2014-09-26 01:45:24
8 1 xxxy 2014-09-26 14:01:43
9 1 xxxx 2014-09-26 22:01:27
對於每一天,我想選擇第一條記錄和最后一條記錄。 結果如下:
**ID StationID Status UpdateTime**
1 1 xxxx 2014-09-25 00:01:05
5 1 xxxy 2014-09-25 23:21:34
6 1 xxxz 2014-09-26 00:01:00
9 1 xxxx 2014-09-26 22:01:27
謝謝大家;
試試這個:
select *
from YOUR_TABLE yt
join (select min(UpdateTime) minUpdateTime, max(UpdateTime) maxUpdateTime
from YOUR_TABLE
group by DATE_FORMAT(UpdateTime, '%Y-%m-%d')
) aggyt on aggyt.minUpdateTime = yt.UpdateTime or aggyt.maxUpdateTime = yt.UpdateTime
select * from mytable
where UpTime = (select min(UpTime) from mytable group by date_format(UpTime,'%Y-%m-%d'))
or UpTime = (select max(UpTime) from mytable group by date_format(UpTime,'%Y-%m-%d'))
order by id
select * from mytable
where UpTime= (select min(UpTime) from mytable group by date_format(UpTime,'%Y-%m-%d'))
or UpTime= (select max(UpTime) from mytable group by date_format(UpTime,'%Y-%m-%d'))
order by id
如果你想通過工會來做到這一點
SELECT ID, StationId, Status, max(UpdateTime) FROM YOUR_TABLE GROUP BY DATE(UpdateTime)
UNION ALL
SELECT ID, StationId, Status, min(UpdateTime) FROM YOUR_TABLE GROUP BY DATE(UpdateTime)
只是添加,為了提高效率,使用UNION ALL而不是UNION(或UNION DISTINCT)作為UNION需要帶索引的內部臨時表(跳過重復行),而UNION ALL將創建沒有這樣索引的表。
如果你想通過union和subquery來做這件事
select * from table where id IN ( select max(id) from table GROUP BY DATE(UpdateTime) )
union all
select * from table where id IN ( select min(id) from table GROUP BY DATE(UpdateTime) )
如果你想通過子查詢來做
SELECT * from table
WHERE id IN ( select max(id) from table GROUP BY DATE(UpdateTime) )
OR id IN ( select min(id) from table GROUP BY DATE(UpdateTime) )
可能這會起作用
SELECT ID,StationId,Status,MAX(UpdateTime) FROM YOUR_TABLE GROUP BY DATE(UpdateTime)
UNION ALL
SELECT ID,StationId,Status,MIN(UpdateTime) FROM YOUR_TABLE GROUP BY DATE(UpdateTime)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.