mysql - SQL 获取最大日期

标签 mysql sql date select greatest-n-per-group

我需要了解每个客户的每种产品的最新价格。我不太擅长 SQL,我不明白我该怎么做。

数据:

enter image description here

我想要什么:

enter image description here

可以通过 SQL 请求获得此数据吗?

最佳答案

使用窗口函数 ROW_NUMBER(),如果在您的 RDBMS 中可用:

SELECT product, price, date, client
FROM (
    SELECT
        t.*,
        ROW_NUMBER() OVER(PARTITION BY product, client ORDER BY date DESC) rn
    FROM mytable t
) x
WHERE rn = 1

在 MySQL < 8.0 中:

SELECT product, price, date, client
FROM mytable t
WHERE NOT EXISTS (
    SELECT 1
    FROM mytable t1
    WHERE t1.client = t.client AND t1.product = t.product AND t1.date > t.date
)

关于mysql - SQL 获取最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58317856/

相关文章:

php - 使用 AJAX、PHP 和 JSON 从 MySQL 数据库获取数据项

mysql - 将日期时间从 VB.Net 保存到 mysql 数据库日期?

mysql - 如何更新字段以包含密码哈希值

javascript - 如何在 INTEL XDK 中将今天的日期设置为默认日期并且每天都会更改?

ruby - 高效地截断 Ruby Time 对象

php - 查询日期中的月、日、年

mysql - Hibernate 按可能为空的字段排序

php - 从按钮发送数据到 php 页面并发布结果

sql - 为什么在查询数据库时 nolock 很重要

使用 PDO 准备 () 的 PHP SQL 查看计数器