【发布时间】:2014-04-29 06:16:41
【问题描述】:
我已经开始学习 MySQL,但我遇到了 JOIN 的问题。
我有两张桌子:purchase 和 sales
purchase
--------------
p_id date p_cost p_quantity
---------------------------------------
1 2014-03-21 100 5
2 2014-03-21 20 2
sales
--------------
s_id date s_cost s_quantity
---------------------------------------
1 2014-03-21 90 9
2 2014-03-22 20 2
我希望这两个表在purchase.date=sales.date 处加入以获得以下结果之一:
选项 1:
p_id date p_cost p_quantity s_id date s_cost s_quantity
------------------------------------------------------------------------------
1 2014-03-21 100 5 1 2014-03-21 90 9
2 2014-03-21 20 2 NULL NULL NULL NULL
NULL NULL NULL NULL 2 2014-03-22 20 2
选项 2:
p_id date p_cost p_quantity s_id date s_cost s_quantity
------------------------------------------------------------------------------
1 2014-03-21 100 5 NULL NULL NULL NULL
2 2014-03-21 20 2 1 2014-03-21 90 9
NULL NULL NULL NULL 2 2014-03-22 20 2
主要问题在于第一个结果的第二行。我不希望在第 2 行再次出现值2014-03-21, 90, 9... 我想要 NULL。
我不知道是否可以这样做。如果有人能帮助我,那就太好了。
我尝试使用左连接
选择 *
来自sales
左连接 purchase 开启 sales.date = purchase.date
输出:
s_id 日期 s_cost s_quantity p_id 日期 p_cost p_quantity 1 2014-03-21 90 9 1 2014-03-21 100 5 1 2014-03-21 90 9 2 2014-03-21 20 2 2 2014-03-22 20 2 NULL NULL NULL NULL
但我希望第二行的前 4 个值为 NULL
【问题讨论】:
-
尝试一下,然后发布您尝试过的内容。
-
看起来像一个简单的问题,但我不明白的事情......让它更具可读性。给出一些 SQL,给出预期的结果。
-
你打算做任何报告吗?
-
是的,我想举报
-
pid 和 sid 这些是主键吗?