假设我有 2 个如下表:
表:产品
-------------
|PRODUCT |
-------------
|IPAD |
-------------
|IPHONE |
-------------
表:销售额
-----------------------------
SALES_PERSON|PRODUCT|IS_SOLD|
-----------------------------
ALICE |IPAD | 1 |
-----------------------------
JOHN |IPONE | 1 |
-----------------------------
是否可以让 SQL 语句产生如下结果?
--------------------------------
SALES_PERSON| PRODUCT | IS_SOLD|
--------------------------------
ALICE | IPAD | 1 |
--------------------------------
ALICE | IPHONE | null |
--------------------------------
JOHN | IPAD | null |
--------------------------------
JOHN | IPHONE | 1 |
--------------------------------
最佳答案
您可以使用联接来执行此操作,但您需要不止一个。您需要在产品和销售人员之间创建交叉产品。左侧将此连接到 sales_person
表:
select pe.sales_person, p.product, sp.is_sold
from product p cross join
(select distinct sales_person from sales) pe left outer join
sales_person sp
on sp.product = p.product and
sp.sales_person = pe.sales_person;
关于mysql - 左连接和右连接是否足够?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22394770/