我有一个问题是:从MySQL中的一组特定行中捕获最新日期。在MySQL中选择行的日期
例如:假设我有一个包含ID,客户端ID和购买日期的采购表。
如果我让基于客户端ID = 1的选择,我必须抓住购买的ID = 2
我有一个问题是:从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_db
WHERE `client id` = 1
Id列不是聚合。该查询不会在其他数据库上运行,甚至不会在严格模式下运行的MySQL上运行。 –
所以如此。事实上,我希望能够通过程序选择客户端ID。也就是说,我的“GROUP BY client_id”将是“where client_id = id”。但是这对我的答案帮了很大忙!坦克你 –
@TimBiegeleisen这是正确的这个例子Id实际上并不需要在那里,除了它可以是一个参考。对于严格的MySQL Tim的答案会更好。对于不同的数据库,这是一个依赖于数据库的问题,因为有很多方法可以为皮肤提供皮肤 – Tik
SELECT id, client_id, DATE_OF_PURCHASE
FROM purchasing
GROUP BY DATE_OF_PURCHASE
HAVING MAX(DATE_OF_PURCHASE)
尝试上面的代码。
希望这会有所帮助。
如果你想整行,您可以通过几种方式做到这一点,但认为“过滤”,而不是“聚集”:
select t.*
from t
where (client_id, date_of_purchase) in (select client_id, max(date_of_purchase)
from t
group by client_id
);
当然,也有很多的方式来表达类似的逻辑。 。 。使用具有相关子查询的=
,exists
或join
与聚合查询。
这样做的一种方法是加入子查询,查找每个客户的最新购买日期。
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
更新你的问题,并添加预期的结果....数据不言 – scaisEdge
选择ID,'客户id',MAX('purchase'日期) FROM表,其中'客户id' = 1 GROUP BY'客户端ID'; – JYoThI