mysql为表中的每个id选择最新的1行

hgc7kmma  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(347)

我有一个名为sw\u practice的表,其中填充了组织,还有一个名为sw\u invoices的表,其中包含每个组织的发票数据。
在sw\u invoices中,可以有多个发票(有一个递增的唯一id列)链接到具有自己id(prac\u id)的组织。
我试图得到所有组织的列表(不管他们是否已经开过发票),但每个组织只有一个条目,所以如果他们已经开过发票,只有最新的节目。
我试过:

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

但这只显示了其中最新的一行。
如果我从末尾去掉限制1,它确实会显示所有数据,但对于某些组织,它会显示多个条目。
我希望查询显示“selectall from sw\u practices where active=2并显示他们的发票数据,但只显示每个不同prac\u id的最新1”

jbose2ul

jbose2ul1#

使用分组依据:

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

相关问题