在基于加入条件的 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 中的 运行 示例。