在mysql中,我根据日期从一个组中选择最新的行,

mu0hgdu0  于 5个月前  发布在  Mysql
关注(0)|答案(3)|浏览(64)

我有下一个记录从表'数据'
| 日期邮报|date_complete|
| --|--|
| 2023-11-28 2023-11-28 2023-11-28| 2023-12-04 2023-12-04 2023-12-04|
| 2023-11-28 2023-11-28 2023-11-28| 2023-12-04 2023-12-04 2023-12-04|
| 2023-11-28 2023-11-28 2023-11-28| 2023-12-05 - 2023 -05|
| 2023-11-28 2023-11-28 2023-11-28| 2023-12-05 - 2023 -05|
| 2023-11-29 - 2023-11-29| 2023-12-06 - 01 - 02 - 2023-12-06 - 01 - 02 - 01-|
| 2023-11-29 - 2023-11-29| 2023-12-06 - 01 - 02 - 2023-12-06 - 01 - 02 - 01-|
| 2023-11-29 - 2023-11-29| 2023-12-07 2023-12-07|
| 2023-11-29 - 2023-11-29| 2023-12-07 2023-12-07|
有可能选择这样的东西吗?
| 日期邮报|date_complete|
| --|--|
| 2023-11-28 2023-11-28 2023-11-28| 2023-12-05 - 2023 -05|
| 2023-11-28 2023-11-28 2023-11-28| 2023-12-05 - 2023 -05|
| 2023-11-29 - 2023-11-29| 2023-12-07 2023-12-07|
| 2023-11-29 - 2023-11-29| 2023-12-07 2023-12-07|
从date_complete中选择最新的行,但是选择的行在所有具有相同date_post的行中,谢谢。
我不太擅长mysql,所以我问这是不是可能的。

hfwmuf9z

hfwmuf9z1#

您可以使用子查询来选择最新的值,然后从中获取详细信息。

SELECT date_post, date_complete
FROM
    data
JOIN (
    SELECT
        date_post,
        MAX(date_complete) AS latest_date_complete
    FROM
        data
    GROUP BY
        date_post
) AS max_dates
ON
    date_post = max_dates.date_post
    AND d.date_complete = max_dates.latest_date_complete;

字符串
如果你只是想为每个唯一的date_post值找到latest date_complete,你可以使用MAX函数在GROUP BY子句创建的每个组中找到最大的date_complete,如下所示。

SELECT
    date_post,
    MAX(date_complete) AS latest_date_complete
FROM
    data
GROUP BY
    date_post;

ff29svar

ff29svar2#

或者你可以在这里使用aggregation:

SELECT d.date_post, d.date_complete
FROM data d
JOIN (
    SELECT date_post, MAX(date_complete) AS max_date_complete
    FROM data
    GROUP BY date_post
) AS sub
ON d.date_post = sub.date_post AND d.date_complete = sub.max_date_complete;

字符串
这里是sample fiddle link

roqulrg3

roqulrg33#

您还可以选择使用窗口函数MAX()来检索由 date_post 定义的组中的最高日期。然后,仅显示与此最高日期对应的行:

SELECT date_post, date_complete
FROM (
    SELECT date_post, date_complete,
      MAX(date_complete) OVER (PARTITION BY date_post ORDER BY date_complete DESC) AS max_date_complete
    FROM `data`
) AS d
WHERE max_date_complete = date_complete;

字符串

相关问题