我有两个看起来像这样的表:
SalesPeople
-----------
SalesID, FirstName, LastName, Supervisor
Members
-------
MemberID, Firstname, LastName, Region, SalesID
尝试显示每个销售人员的ID以及分配给他们的会员。我写了以下SQL查询:
SELECT s.*
FROM salespeople s
INNER JOIN members m ON s.salesid = m.salesid
但是,如果没有将销售人员分配给任何成员,我需要说明,“没有成员分配”该输出。我还想将MemberID列标记为'Clients'。
上面的代码有效,但是当我尝试将Members MemberID列标记为'Clients'时,我收到错误:
SELECT s.*
FROM salespeople s
INNER JOIN members m AS Clients ON s.salesid = m.salesid
我的问题再次出现:
如何显示销售人员的SalesID
和匹配的MemberID
。如果销售人员没有被分配给任何成员,则无论如何都要显示:“没有成员分配。”如上所述,我需要将显示MemberID
列的列标记为Clients
。
如果这令人困惑,我非常乐意澄清。
答案 0 :(得分:2)
试试这个:
SELECT s.*, COALESCE(m.memberId, 'No Members Assigned') clients
FROM salespeople s
LEFT JOIN members m ON s.salesid = m.salesid
当没有该销售人员的成员时,LEFT JOIN
会将m.memberId
视为空。
COALESCE
函数将返回作为输入发送的第一个非null参数。因此,在这种情况下,如果m.memberId
为null,则返回'No Members Assigned'
。
将两者结合起来的结果就是你期望的结果。