【问题标题】:Filter MYSQL table for with maximum dates筛选具有最大日期的 MYSQL 表
【发布时间】:2020-11-02 13:04:01
【问题描述】:

我想过滤我的表格并在名为“日期”的列中选择日期为最新日期的所有行

如果可能的话,我想使用 'where' 功能。

注意我有很多行具有相同的日期。例如,我有一张按产品列出所有天数的表格,但我只想查看最近天数的销售额。

【问题讨论】:

  • 向我们展示您的尝试。
  • 欢迎来到 Stack Overflow。如果您使用Tour 并阅读How To Ask,您将在这里获得更好的体验,然后使用创建Minimal, Reproducible Example 所需的详细信息编辑您的问题。

标签: mysql sql date where-clause


【解决方案1】:

您可以使用此查询来获取日期为最新记录的完整列表:

SELECT *
FROM `table`
WHERE date=(SELECT MAX(date) 
            FROM `table`)

【讨论】:

    【解决方案2】:

    一种选择是使用存在逻辑:

    SELECT *
    FROM yourTable t1
    WHERE NOT EXISTS (SELECT 1 FROM yourTable t2 WHERE t2.date > t1.date);
    

    在 MySQL 8+ 上,我喜欢在这里使用RANK

    WITH cte AS (
        SELECT *, RANK() OVER (ORDER BY date DESC) rnk
        FROM yourTable
    )
    
    SELECT *
    FROM cte
    WHERE rnk = 1;
    

    您也可以使用 Gordon 的子查询方法作为第三种选择。

    【讨论】:

      【解决方案3】:

      您可以使用子查询:

      select t.*
      from t
      where date = (select max(t2.date) from t t2);
      

      如果您想要每个产品的最新日期,那么您将使用相关子查询。

      select t.*
      from t
      where date = (select max(t2.date) from t t2 where t2.product = t.product);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-15
        • 2019-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-26
        • 1970-01-01
        相关资源
        最近更新 更多