[英]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.