我的資料看起來像,
表 - usr_weight
| 用戶身份 | 重量 | 日志時間 |
|---|---|---|
| 1. | 10 | 2021-11-30 10:29:03 |
| 1. | 12 | 2021-11-30 12:29:03 |
| 1. | 11 | 2021-11-30 14:29:03 |
| 1. | 18 | 2021-12-01 08:29:03 |
| 1. | 12 | 2021-12-15 13:29:03 |
| 1. | 14 | 2021-12-15 17:29:03 |
在這里,我對不同時間的每個日期都有重復。因此,將日期分組并回傳每個日期的最大時間記錄。
詢問
select weight, log_time from usr_weight where user_id = 1 group by DATE(log_time)
在這里,我為每個日期獲得 1 條記錄,但該行不是 max(log_time)。
uj5u.com熱心網友回復:
使用ROW_NUMBER我們可以嘗試:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY DATE(log_time)
ORDER BY log_time DESC) rn
FROM usr_weight
WHERE user_id = 1
)
SELECT user_id, weight, log_time
FROM cte
WHERE rn = 1;
這是一個老派的加入方式:
SELECT uw1.user_id, uw1.weight, uw1.log_time
FROM usr_weight uw1
INNER JOIN
(
SELECT DATE(log_time) AS log_time_date, MAX(log_time) AS max_log_time
FROM usr_weight
WHERE user_id = 1
GROUP BY DATE(log_time)
) uw2
ON uw2.log_time_date = DATE(uw1.log_time) AND
uw2.max_log_time = uw1.log_time
WHERE
uw1.user_id = 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/385658.html
