我有一个表,其中 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_at
的MAX()
,分组后按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/