繁体   English   中英

MySQL:按日期和分组依据选择行顺序

[英]MySQL: Select row order by date with group by

我有mysql查询:

SELECT * FROM customer_wallet
WHERE credit_balance<0
GROUP BY cus_id
ORDER BY date_added DESC

它应该通过cus_id和credit_balance <0给我最后添加的细节。 但是,这给了我第一个负余额。

如果我从查询中删除GROUP BY ,它将起作用。 但是,由于所有客户都在同一张桌子上,因此我需要保持这一点。

这是SQL Fiddle

credit_balance应该为-50。 不是-111。

这是正确的查询:

SELECT *
FROM customer_wallet as a
inner join
(
  select max(id) as maxid
  from customer_wallet
  WHERE credit_balance<0
  group by cus_id
) as b
on (a.id=b.maxid)

注意:此查询之所以有效,是因为通常数据是按增量插入的,因此我们可以假设我们可以使用id代替日期

您可以通过两种方法来执行此操作。 对于其中之一,请尝试以下操作:

SELECT cw.*
FROM (
  SELECT *
  FROM customer_wallet 
  WHERE credit_balance < 0
  ORDER BY date_added DESC
) cw
GROUP BY cw.cus_id;

您还可以在date_added上使用MAX():

SELECT credit_balance, date_added
FROM customer_wallet
WHERE credit_balance < 0
GROUP BY cus_id
ORDER BY MAX(date_added) DESC;

这些都应该为您工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM