我正在进行连接,我似乎无法获得我需要的结果集。让我画的情景:在mysql查询中的两个连接没有返回预期的结果
我有2个表:
数据表
+----+-------+
| ID | Name |
+----+-------+
| 10 | Test1 |
| 11 | Test2 |
| 12 | Test3 |
| 13 | Test4 |
| 14 | Test5 |
| 15 | Test6 |
+----+-------+
加入表
+----+-----+-----+-----+
| ID | FID | GID | Val |
+----+-----+-----+-----+
| 10 | 3 | | abc |
| 10 | | 1 | def |
| 11 | 3 | | ijk |
| 12 | | 1 | lmn |
| 13 | 4 | | opq |
+----+-----+-----+-----+
预期的结果集
+---------------+-----------------+---------------+----------------+----------------+
| Data table id | Data table name | Join Tabe FID | Join Table GID | Join Table Val |
+---------------+-----------------+---------------+----------------+----------------+
| 10 | Test1 | 3 | | abc |
| 11 | test2 | 3 | | ijk |
| 12 | test3 | | 1 | lmn |
+---------------+-----------------+---------------+----------------+----------------+
我的查询
Select
*
from
datatable A
join jointable b
on
A.ID = B.ID
and B.FID = 3
join jointable c
on
A.ID = C.ID
and C.GID = 1
and C.FID <> null
发生了什么是表C上的连接正在对表A和B之间的连接的结果集进行,因此结果集为空。
我希望表C上的连接应用于表A,而不是表A和B之间连接的结果集;这将导致预期的结果集。
任何人都可以帮忙吗?
感谢
有与3的'id'没有记录,所以我希望'B.ID = 3'过滤掉所有的记录。 –
我认为你需要的是一个左外连接,但是我没有完全理解你的问题。 –
@GordonLinoff对不起,是一个错字,纠正 – Yash