mysql - SQL - 获取10条记录,按列排序,其中一些列是唯一的

标签 mysql sql

给定一个包含时间戳列的表,我想获取 10 条最新记录,其中特定列是唯一的。

如何做到这一点?

示例:

数据:

purchases
-----------------------------------------------------------------
timestamp   first_name    last_name   customer_id  product_name  purchase_amount

如何获取最近进行过购买的 5 位客户以及 product_namepurchase_amount

结果:

James, Jackson, 1234, 'foo', 432.123
Tim, McTimothy, 321, 'bar', 5124.11
Bob, Bobbertson, 55, 'foo', 432.123
Claire, Rando, 191, 'tv', 700.00
Jimbo, Manman, 631, 'ps4', 450.00

我尝试过的:

此查询失败,因为它需要对 product_namepurchase_amount 进行聚合,但我们不需要聚合,只需要最新值。

SELECT first_name, last_name, customer_id, product_id
FROM purchases
GROUP BY first_name, last_name, customer_id
ORDER BY timestamp DESC
LIMIT 10

最佳答案

我认为这可以做到:

SELECT p.*
FROM 
(  
    SELECT customer_id, MAX(timestamp) last_purchase_time
    FROM purchases
    GROUP BY customer_id
    ORDER BY MAX(timestamp) DESC
    LIMIT 5
) lp
INNER JOIN purchases p ON p.customer_id = lp.customer_id and p.timestamp = lp.last_purchase_time

嵌套查询获取每个客户的最后购买时间,并进一步将嵌套结果集限制为最近的 5 个客户。然后,我们将其连接 repo 买表,以便我们可以看到每个客户上次购买的完整购买数据。这确实假设客户不能在完全相同的情况下进行两次购买,但这可能是安全的。

关于mysql - SQL - 获取10条记录,按列排序,其中一些列是唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43600787/

相关文章:

php - JSON 编码 - 获取 MySQL 数据到 iPhone

php - 在MySQL中连接一个 'blog'表和 'comments'表

sql - T-SQL - 字符串连接

mysql - 插入值 + 最大 ID

MySQL 索引 : Why does multi-column index perform worse than single column index?

mysql - SQL Phpmyadmin-从存储在数据库中并存储在另一列中的日期列减去当前日期

php - 将数据库中的坐标绘制到谷歌地图中,​​不断检查新值

php - 我可以在 PHP 中混合使用 MySQL API 吗?

MySQL count, group by 和 join 查询

php - 如何在三重内连接表中显示适当的数据?