簡體   English   中英

MySQL:Select 多列,但每個不同值的最新值為一列

[英]MySQL: Select multiple columns but with the latest value of one column for each distinct value

我想 select 幾列。 在一列中有兩個不同的值“top”和“bot”。 每行都有一個時間戳。 我想確保,對於每個值“top”和“bot”,我確實獲得了最新的時間戳條目。

桌子:

uid | datetime           | device | temp | hum
================================================
1   |2022-08-30 17:34:34 |top     |11.5  |88.90
2   |2022-08-30 17:34:22 |bot     |13.2  |88.90
3   |2020-10-06 13:48:33 |top     |24.3  |75.00
4   |2020-10-06 14:35:37 |bot     |21.7  |75.00

我想通過 SQL 語句得到以下結果:

datetime            | device | temp | hum
===========================================
2022-08-30 17:34:34 |top     |11.5  |88.90
2022-08-30 17:34:22 |bot     |13.2  |88.90

但我目前的陳述是:

datetime            | device | temp | hum
===========================================
2020-10-06 13:48:33 |top     |24.3  |75.00
2020-10-06 14:35:37 |bot     |21.7  |75.00

所以它不是最新的行,而是最舊的行。

到目前為止,我最好的 SQL 嘗試是:

SELECT datetime, device, temp, hum 
FROM <table_name> 
WHERE uid=123456789 
GROUP BY device 
ORDER BY datetime DESC 
LIMIT 2

這個應該適合你:

SELECT device, datetime 
FROM table_name 
WHERE datetime in (SELECT MAX(datetime) FROM table_name GROUP BY device)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM