MySQL 查询仅选择日期组的最后一行

发布于 2024-11-10 03:59:59 字数 719 浏览 4 评论 0原文

我有以下查询:

SELECT elo, date(date_calculated) date FROM users_historical_elo WHERE uid =36 order by id asc

产生以下结果:

|埃洛 |日期

|984|2011-04-04

|1010|2011-04-04

|1036|2011-04-04

|1016|2011-04-08

|1000|2011-04-08

|944|2011-04-09

|973|2011-04-09

...

我需要帮助编写一个仅选择的查询最后一个“elo”按日期分组。所以输出应该是:

|埃洛 |日期

|1036|2011-04-04

|1000|2011-04-08

|973|2011-04-09

...

谢谢!

I have the following query:

SELECT elo, date(date_calculated) date FROM users_historical_elo WHERE uid =36 order by id asc

that produces this result:

| elo | date

|984|2011-04-04

|1010|2011-04-04

|1036|2011-04-04

|1016|2011-04-08

|1000|2011-04-08

|944|2011-04-09

|973|2011-04-09

...

I need help writing a query that selects only the last "elo" grouping by date. So the output should be:

| elo | date

|1036|2011-04-04

|1000|2011-04-08

|973|2011-04-09

...

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜中书 2024-11-17 03:59:59

如果id是表的主键,那么这样做:

SELECT elo
     , date(date_calculated) AS date
FROM users_historical_elo 
  JOIN
    ( SELECT MAX(id) AS id
      FROM users_historical_elo
      WHERE uid =36
      GROUP BY date(date_calculated)
    ) AS grp
    ON grp.id = users_historical_elo.id
ORDER BY grp.id ASC

If id is the primary key of the table, then this will do:

SELECT elo
     , date(date_calculated) AS date
FROM users_historical_elo 
  JOIN
    ( SELECT MAX(id) AS id
      FROM users_historical_elo
      WHERE uid =36
      GROUP BY date(date_calculated)
    ) AS grp
    ON grp.id = users_historical_elo.id
ORDER BY grp.id ASC
猫性小仙女 2024-11-17 03:59:59

尝试:

SELECT elo, date(date_calculated) date FROM users_historical_elo WHERE uid =36 group by date order by id asc

Try:

SELECT elo, date(date_calculated) date FROM users_historical_elo WHERE uid =36 group by date order by id asc

栩栩如生 2024-11-17 03:59:59

我认为你需要使用 MAX 和 GROUP By。请参阅http://www.tutorialspoint.com/mysql/mysql-max-function。 htm

我认为这会起作用

SELECT elo, MAX(date(date_calculated)) date 
FROM users_historical_elo 
WHERE uid =36 
GROUP BY elo 
ORDER BY id asc

I think you need to use MAX and GROUP By. See http://www.tutorialspoint.com/mysql/mysql-max-function.htm

I think this will work

SELECT elo, MAX(date(date_calculated)) date 
FROM users_historical_elo 
WHERE uid =36 
GROUP BY elo 
ORDER BY id asc
楠木可依 2024-11-17 03:59:59

这:

 SELECT elo, MAX(date) FROM users_historical_elo

会返回 elo 和任何 elo 的最后日期,这似乎是您所要求的?

This:

 SELECT elo, MAX(date) FROM users_historical_elo

Would return the elo and the last date for any elo, which seems to be what you are asking for?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文