我在customers表中有一个名单。第二个表包含事件。 如果事件表中缺少一个名称,它应该从customers.name表中使用" 0"值。
客户表:
| NAME | ADDRESS |
+-----------+-----------+
| Chris | XXX |
| Tom | YYY |
| John | ZZZ |
活动表:
NAME | QUANTITY |
----------+--------------+
Chris | 2 |
Tom | 4 |
如果事件表中缺少一个名称,则查询应从Customers表中添加该名称。 (仅用于显示,不应将其添加到记录中)。
结果应该是这样的:
NAME | QUANTITY |
----------+--------------+
Chris | 2 |
Tom | 4 |
John | 0 |
我正在使用Firebird 2.5
答案 0 :(得分:3)
您可以使用左连接
select a.name, coalesce(b.quantity, 0) as quantity
from Customers a
left join Events b on a.name = b.name
答案 1 :(得分:3)
这是left join
的作用:
select c.name, coalesce(e.quantity, 0) as quantity
from customers c left join
events e
on c.name = e.name;
答案 2 :(得分:3)
或isnull
select a.name, isnull(b.quantity, 0) quantity
from Customers a
left join Events b on a.name = b.name