MySQL JOIN,IF查询

时间:2013-10-27 21:47:17

标签: mysql sql

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

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

如果这令人困惑,我非常乐意澄清。

1 个答案:

答案 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'

将两者结合起来的结果就是你期望的结果。