我有两个看起来像这样的表:

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/

10-10 06:37