MySQL中选定行的日期
我有一个问题:从MySQL中的一组特定行捕获最新日期 例如:假设我有一个带有id、客户id和购买日期的采购表MySQL中选定行的日期,mysql,Mysql,我有一个问题:从MySQL中的一组特定行捕获最新日期 例如:假设我有一个带有id、客户id和购买日期的采购表 如果我根据客户id=1进行选择,我必须捕获id=2的购买信息。这就是您想要的吗 SELECT Id, `client id`, MAX(`date of purchase`) FROM your_db GROUP BY `client id` 如果您只想返回1行,那么 SELECT Id, `client id`, MAX(`date of purchase`) FROM your_
如果我根据客户id=1进行选择,我必须捕获id=2的购买信息。这就是您想要的吗
SELECT Id, `client id`, MAX(`date of purchase`)
FROM your_db
GROUP BY `client id`
如果您只想返回1行,那么
SELECT Id, `client id`, MAX(`date of purchase`)
FROM your_db
WHERE `client id` = 1
试试上面的代码
希望这会有所帮助。如果您想要整行,可以通过多种方式完成,但要考虑“筛选”而不是“聚合”:
当然,有很多方法可以表达相似的逻辑。将
=
与相关子查询一起使用,存在
,或将与聚合查询一起加入。一种方法是加入子查询,该子查询将查找每个客户的最新购买日期
SELECT t1.*
FROM yourTable t1
INNER JOIN
(
SELECT client_id, MAX(purchase_date) AS max_purchase_date
FROM yourTable
GROUP BY client_id
) t2
ON t1.client_id = t2.client_id AND
t1.purchase_date = t2.max_purchase_date
-- WHERE client_id = 1
更新您的问题并添加预期结果…作为数据而不是文字从表中选择Id,客户Id
,MAX(购买日期
),其中客户Id
=1组,由客户Id
;Id列不是聚合。这个查询不会在其他数据库上运行,甚至不会在严格模式下运行的MySQL上运行。事实上,我希望能够通过过程选择客户机id。也就是说,我的“按客户机id分组”将是“其中客户机id=id”。但这对我的答案帮助很大!!!坦克you@TimBiegeleisen这是正确的,因为这个示例Id实际上不需要在那里,它可以作为参考。对于严格的mysql,Tim的答案会更好。对于不同的数据库,这是一个取决于数据库的问题,因为有许多方法可以剥猫皮
select t.*
from t
where (client_id, date_of_purchase) in (select client_id, max(date_of_purchase)
from t
group by client_id
);
SELECT t1.*
FROM yourTable t1
INNER JOIN
(
SELECT client_id, MAX(purchase_date) AS max_purchase_date
FROM yourTable
GROUP BY client_id
) t2
ON t1.client_id = t2.client_id AND
t1.purchase_date = t2.max_purchase_date
-- WHERE client_id = 1