我有一个名为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”
答案 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