在基于加入条件的 SQL 面试中,有人问我以下伪代码。谁能解释我的方法出了什么问题?
I was asked the following pseudocode in a SQL interview based on joining condition. Can anyone explain what went went wrong with my approach?
[两个表-ta 和 tb 各列]
我被要求在项目 id 上放置一个 LEFT JOIN 并解释可能的输出是什么。我写了这样的伪代码-
SELECT
table a.ITEM ID,
table a.ITEM NAME,
table b.ITEM ID,
table b.ITEM NAME
from
table a
LEFT JOIN table b ON table a.ITEM ID = table b.ITEM ID;
我告诉他们输出应该是这样的,他们说这不是正确的答案。
ITEM ID ITEM NAME ITEM ID ITEM NAME
-1 X -1 P
-1 Y -1 Q
-1 Z -1 R
-1 W
谁能根据逻辑解释一下正确答案是什么?
如果截图中的数据是他们给你的数据,所有的item id都是-1
这意味着无论您执行 inner join 还是 outer join ,它都将是一个交叉连接,这意味着您将拥有 table1 与 table 2 的所有组合,这将是 12 行
结果是两个表的全部叉积:
item_id item_name item_id item_name
-------- ---------- -------- ---------
-1 X -1 P
-1 X -1 Q
-1 X -1 R
-1 Y -1 P
-1 Y -1 Q
-1 Y -1 R
-1 Z -1 P
-1 Z -1 Q
-1 Z -1 R
-1 W -1 P
-1 W -1 Q
-1 W -1 R
请参阅 DB Fiddle 中的 运行 示例。
[两个表-ta 和 tb 各列]
我被要求在项目 id 上放置一个 LEFT JOIN 并解释可能的输出是什么。我写了这样的伪代码-
SELECT
table a.ITEM ID,
table a.ITEM NAME,
table b.ITEM ID,
table b.ITEM NAME
from
table a
LEFT JOIN table b ON table a.ITEM ID = table b.ITEM ID;
我告诉他们输出应该是这样的,他们说这不是正确的答案。
ITEM ID ITEM NAME ITEM ID ITEM NAME
-1 X -1 P
-1 Y -1 Q
-1 Z -1 R
-1 W
谁能根据逻辑解释一下正确答案是什么?
如果截图中的数据是他们给你的数据,所有的item id都是-1 这意味着无论您执行 inner join 还是 outer join ,它都将是一个交叉连接,这意味着您将拥有 table1 与 table 2 的所有组合,这将是 12 行
结果是两个表的全部叉积:
item_id item_name item_id item_name
-------- ---------- -------- ---------
-1 X -1 P
-1 X -1 Q
-1 X -1 R
-1 Y -1 P
-1 Y -1 Q
-1 Y -1 R
-1 Z -1 P
-1 Z -1 Q
-1 Z -1 R
-1 W -1 P
-1 W -1 Q
-1 W -1 R
请参阅 DB Fiddle 中的 运行 示例。