我有两个看起来像这样的表:
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列标记为“客户端”。
上面的代码有效,但是当我尝试将Member MemberID列标记为“ Clients”时,出现错误:
SELECT s.*
FROM salespeople s
INNER JOIN members m AS Clients ON s.salesid = m.salesid
再次,我的问题是:
如何显示销售员的
SalesID
和匹配的MemberID
。如果未将销售员分配给任何成员,则无论如何都可以显示该消息:“未分配成员”。如上所述,我需要将显示MemberID
列的列标记为Clients
。如果这仍然令人困惑,那么我很乐于澄清。
最佳答案
试试看:
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'
。两者结合的结果就是您所期望的。
关于mysql - MySQL JOIN,IF查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19623984/