gpt4 book ai didi

mysql - MySQL 中的 MAX 函数未返回正确的键值

转载 作者:行者123 更新时间:2023-11-29 23:29:10 25 4
gpt4 key购买 nike

我有一个名为tbl_user_sal的表:

| id | user_id | salary |    date    |
| 1 | 1 | 1000 | 2014-12-01 |
| 2 | 1 | 2000 | 2014-12-02 |

现在我想获取最大日期的id。我使用了以下查询:

SELECT MAX(date) AS from_date, id, user_id, salary
FROM tbl_user_sal
WHERE user_id = 1

但它给了我这个输出:

| id | user_id | salary | from_date  |
| 1 | 1 | 2000 | 2014-12-02 |

就最大日期而言,这是正确的 2014-12-02,但相应的 id 不正确。其他记录也会发生这种情况。我使用 order by 进行检查,但也没有成功。有人能解释一下吗?

注意:根据我的需要,最大日期不一定有最大id。记录可以有最大日期,但 id 可能较旧。

最佳答案

如果您只想检索单个用户的信息(您似乎是这样的,因为您的 WHERE 子句),只需使用 ORDER BYLIMIT :

SELECT *
FROM tbl_user_sal
WHERE user_id = 1
ORDER BY date DESC
LIMIT 1

但是,如果您想为每个用户做到这一点,您就必须变得更花哨一些。类似的事情应该可以做到:

SELECT t2.id, user_id, date
--find max date for each user_id
FROM (SELECT user_id, MAX(date) AS date
FROM tbl_user_sal
GROUP BY user_id) AS t1
--join ids for each max date/user_id combo
JOIN tbl_user_sal AS t2
USING (user_id, date)
--limit to 1 id for every user_id
GROUP BY
user_id

关于mysql - MySQL 中的 MAX 函数未返回正确的键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26698224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com