2017-07-25 94 views
0

我有这样的一个表:如何获得小组最后一个项目BY

id transaction_id auto_recurring paid_amount package_customerid 
37    0    1   0     4 
45    37    1   0     4 
51    0    1   0     4 
57    51    1   0     4 
62    0    1   0     4 
67    62    1   0     4 

有6条package_customer_id的= 4。现在我想的4.最后一条记录在这种情况下,ID = 67是我想要的记录。我试试SELECT * FROM transactions GROUP BY package_customer_id。但是我得到了package_customer_id = 4的第一个记录,即:id = 4是我提取的结果。我怎样才能得到id = 67(我想要的记录)修改此sql?

+0

请注意,使用“分组依据”时,您不一定会获得记录。您将收到符合选择标准的字段集合。选择字段(你的“*”所在的字段)需要在where子句中表示,或者使用像MAX一样的聚合函数https://dev.mysql.com/doc/refman/5.7/en/group-by -functions.html如果你尝试这样做,较新版本的MySQL会给你一个错误。 – Jaydee

回答

0

请勿使用group by。使用where

SELECT t.* 
FROM transactions t 
WHERE t.id = (SELECT MAX(t2.id) 
       FROM transactions t2 
       WHERE t2.package_customer_id = t.package_customer_id 
      ); 

可以筛选此为你喜欢的任何包客户ID,在外部查询。

+0

不处理package_CustomerID = 4 – xQbert

0

你可以试试这个。

SELECT temp.* FROM (SELECT * FROM `transactions` WHERE package_customer_id = 4 order by id DESC LIMIT 1) AS temp GROUP BY temp.package_customer_id 
+0

不处理package_CustomerID = 4 – xQbert

+0

@xQbert OH!我滑过这一点,反正我可以在子查询中添加条件 –

-1

你可以使用这样的:

SELECT * FROM transactions WHERE id IN (SELECT MAX(id) FROM transactions GROUP BY package_customerid) 
+0

不处理package_CustomerID = 4 – xQbert

2

SELECT * FROM transactions WHERE package_customer_id = 4 ORDER BY id DESC LIMIT 1;

这将是我的投篮吧。很抱歉,但我没有测试它,我把它留给你:)

编辑:

不要忘记在列引号“'”的名:)

检查你列名package_customer_id OR package_customerid

+1

只有当字段是“保留字”时才需要反引号 – xQbert

+0

只有当所有格 - “列名”或把它排除在外,如“列名” – Strawberry

+0

@Strawberry那么宫缩怎么办?我通常不会使用它们,但是...:P注意:关键字不需要反引号 – xQbert

-1

尝试此查询

,如果你有需要GROUP BY子句:使用此查询

SELECT * FROM transactions where GROUP BY package_customerid ORDER BY package_customerid DESC LIMIT 1; 

OR ,如果你不与GROUP需要BY子句:使用此查询

SELECT MAX(id),transaction_id,auto_recurring,paid_amount,package_customerid FROM transactions where package_customerid=4; 

输出:

id transaction_id auto_recurring paid_amount package_customerid 
67    62    1   0     4 
+0

在这个问题中,提到使用Group by子句 –

+0

我从来没有理解使用聚合瓦特/字段值是不同的。那么在这里选择什么transaction_ID?为什么是62?而不是0 51或37? – xQbert

相关问题