Mysql 按选择每组的最后一个寄存器

Mysql 按选择每组的最后一个寄存器,mysql,sql,symfony,Mysql,Sql,Symfony,我需要为每个budget\u id选择最后一个寄存器,它是一个外键 例如,如果我的表是: id | budget_id | comment 1 | 8 | Test 1 2 | 8 | Test 2 3 | 5 | Test 1 4 | 5 | Test 2 我需要这样检索: id | budget_id | comment 4 | 5 | Test 2 2 | 8 | Test 2 但是它总是为每个预算id显示第一个寄存器。在测试2中,显示测试1 以下是我迄今为止的SQL: S

我需要为每个
budget\u id
选择最后一个寄存器,它是一个外键

例如,如果我的表是:

id | budget_id | comment
1  | 8 | Test 1
2  | 8 | Test 2
3  | 5 | Test 1
4  | 5 | Test 2
我需要这样检索:

id | budget_id | comment
4  | 5 | Test 2
2  | 8 | Test 2
但是它总是为每个
预算id
显示第一个寄存器。在
测试2
中,显示
测试1

以下是我迄今为止的SQL:

SELECT *
  FROM note
 GROUP BY budget_id
 ORDER BY id DESC
我已经尝试添加
,子选择了
MAX
字段
created\u在
,但没有选择

编辑

在做了我被告知的事情之后,我设法让它工作起来,但现在查询只返回每个
budget\u id
的第二个寄存器。以下是我的SQL:

SELECT  MAX(n.id),
        c.name, 
        MAX(n.comment)
  FROM  note n,
        budget b,
        customer c
 WHERE  n.budget_id = b.id
   AND  b.customer_id = c.id
 GROUP  BY n.budget_id
 ORDER  BY n.id DESC

使用group by(分组依据)为每个预算id选择最大id:

SELECT MAX(id) as id, budget_id, MAX(comment) as comment
FROM table GROUP BY budget_id

虽然MySQL不需要MAX on comment列,但正确的SQL确实需要对group by之外的每一列进行聚合(如果您在Oracle上尝试相同的查询,但在comment列上没有使用聚合函数,则会出现错误)

您必须选择MAX on id和comment,然后选择group by budget\u id


选择max(id)id,max(comment)as comment,budget\u id from table group by budget\u id order by max(id)

我想查询是这样的

select id, budget_id,[comment]
from note 
where id in 
(select max(id)
from note 
group by budget_id)
order by id desc

在您的问题中,我只看到您希望获得每个预算id的最大id,如果您的目的不是此,请提供更多示例或清楚描述

可能重复的我需要检索每个
预算\u id的最后一条评论
如果您的“最后一条评论”是按id排序的,我认为我的回答做到了这一点,您可以尝试!