php - 如何根据mysql中的一列获取唯一记录

标签 php mysql greatest-n-per-group

我有一个表,其中 subscription_id 被多次使用,每个月客户都会收取一个订单,该订单将使用相同的数据和唯一的订单 ID 生成,因此有一列“updated_at”也更新所以我只想从基于 subscription_id 的表中获取一 (1) 条最新记录,我正在使用以下查询,但它不起作用并获取旧记录。

SELECT *
FROM members_subscriptions
WHERE status = 'active'
GROUP BY subscription_id
ORDER BY updated_at DESC

谁能告诉我这个查询有什么问题....

最佳答案

你需要获取updated_atMAX(),分组后按runs排序,所以你需要和最新的日期比较

SELECT DISTINCT *
FROM members_subscriptions
WHERE status = 'active'
AND updated_at IN(
SELECT MAX(updated_at) 
FROM members_subscriptions 
GROUP BY subscription_id
)
ORDER BY updated_at DESC

SELECT DISTINCT m.* 
FROM members_subscriptions m 
INNER JOIN (
  SELECT subscription_id, MAX(updated_at) AS updated_at
  FROM members_subscriptions GROUP BY subscription_id
) AS maxdatte USING (subscription_id, updated_at);

关于php - 如何根据mysql中的一列获取唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22112928/

相关文章:

SQL查询提取每个类别中得票最多的前3条记录

php - 获取MySQL在特定时间添加的信息

php - 带有json响应的jQuery ajax请求,如何?

php - Symfony 4 - 如何在测试前运行 Doctrine 迁移?

mysql - 为什么mysql查询返回不同的结果?

sql - 通过分组查找第二大值

sql - postgres查询根据某些列的多个副本获取第一行

php - 两个字段中两个日期之间的日期

带有 if 子句的 MySQL 触发器问题

mysql - 为什么在 SQL 查询中出现错误?