Firebird 2.5 SQL查询:展示Events表缺失的Customers记录并补0
解决Firebird 2.5中展示所有客户并补全缺失事件数量的问题
嘿,这个需求在Firebird 2.5里很好实现,我们可以通过左连接配合COALESCE函数来达成目标,既能保留所有客户记录,又能把缺失的数量补成0。
核心思路
用LEFT JOIN关联Customers和Events表,这样Customers里的所有姓名都会被保留,哪怕Events里没有对应的记录;再用COALESCE把关联后返回的NULL值替换成0,就正好满足你的展示需求。
完整SQL代码
SELECT c.NAME, COALESCE(e.QUANTITY, 0) AS QUANTITY FROM Customers c LEFT JOIN Events e ON c.NAME = e.NAME ORDER BY c.NAME;
代码细节说明
LEFT JOIN Events e ON c.NAME = e.NAME:左连接会确保Customers表的每一条记录都出现在结果里,不管Events有没有匹配的姓名。如果没有匹配,e.QUANTITY会是NULL。COALESCE(e.QUANTITY, 0):这个函数的作用是返回第一个非NULL的值,所以当e.QUANTITY为NULL时,就会返回0,完美填补缺失的数量。ORDER BY c.NAME:这一步是可选的,只是为了让结果和你给出的预期输出排序一致,如果你不需要特定顺序可以去掉。
执行结果
运行上面的SQL后,会得到你想要的结果:
NAME | QUANTITY -------+---------- Chris | 2 Tom | 4 John | 0
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

