首页 > 解决方案 > 我对我的 SQL 连接感到困惑,因为它返回的结果与我的预期不同

问题描述

我正在尝试将表中的两列连接到其他表中的单个列,即加入eng_idexam_id从intable1中。user_idtable2

select * 
from table1 t1, table2 t2
where t1.eng_id = t2.user_id
  and t1.exam_id = t2.user_id;

此查询仅返回table1 中eng_idexam_idtable1 中相似的记录(两个 id 都是 18 或 20),如果这两个 id 不同的任何记录,我看不到该记录。表 1 中的 Eng_id 和 Exam_id =(等于)表 2 中的 user_id

eng_id虽然,表中充满了exam_id不同的记录。

你能解释一下为什么会这样吗?这是我的结果:

在此处输入图像描述

标签: sql

解决方案


IF t1.eng_id = t2.user_id AND t1.exam_id = t2.user_id THEN t1.eng_id = t1.exam_id;

使用此 SQL,您将获得 t1.eng_id 等于 t1.exam_id 的所有记录。也许您想获取 t1.eng_id 或 t1.exam_id 等于 t2.user_id 的记录。为此,请使用以下 SQL:

SELECT * 
FROM table1 AS t1, table2 AS t2
WHERE t1.eng_id = t2.user_id
OR t1.exam_id = t2.user_id;

推荐阅读