MySQL为表中的每个ID选择最新的1行

时间:2018-01-02 16:24:09

标签: mysql greatest-n-per-group

我有一个名为sw_practice的表,其中包含组织,第二个表名为sw_invoices,其中包含每个组织的发票数据。

在sw_invoices中,可能有多个发票(有一个增量唯一ID列)链接到具有自己ID(Prac_ID)的组织。

我正在尝试获取所有组织的列表(无论它们是否已开具发票),但每个组织只有1个条目,因此,如果它们已开具发票,则仅显示最新的组织。

我试过了:

SELECT * FROM sw_practices as p LEFT JOIN sw_invoices as i ON p.Prac_ID = i.Prac_ID WHERE p.Active = '2' ORDER BY i.Inv_ID DESC LIMIT 1

但这只显示了最新一行。

如果我从结尾删除LIMIT 1,它确实显示了所有数据,但显示了一些组织的超过1个条目。

我希望查询说“从sw_practices选择全部WHERE Active = 2并显示他们的发票数据,但只显示每个不同Prac_ID的最新1”

1 个答案:

答案 0 :(得分:1)

使用group by:

SELECT * FROM sw_practices as p LEFT JOIN (Select * FROM sw_invoices ORDER BY Prac_ID DESC )as i ON p.Prac_ID = i.Prac_ID WHERE p.Active = '2' GROUP BY p.Prac_id