MySQL 复合 Table 连接查询
MySQL Composite Table JOIN QUERY
---------- ---------- ----------
| TBL_1 | | TBL_2 | | TBL_3 |
---------- ---------- ----------
| id | | id | |TBL_1_id|
| foo | | bar | |TBL_2_id|
---------- ---------- ----------
我,有点,在 MySQL 中有这组特定的 table。 TBL_3 是一个复合 table 将 TBL_1 和 TBL_2 中的行绑定在一起。我想通过查询 TBL_3 输出 TBL_1 和 TBL_2 的内容,但我似乎无法掌握 JOIN
s.
的概念
根据我读过的内容,它应该是这样的:
SELECT * FROM tbl_3
RIGHT JOIN (tbl_1, tbl_2) ON (tbl_1.id=tbl_3.tbl_1_id,
tbl_2.id=tbl_3.tbl_2_id)
WHERE tbl_3.id='some_id';
我一无所获。此外,当我调整该查询时,有时会返回行但从未显示 IDK 为什么。这是为什么?
**上面的查询,和这个一样吗?
SELECT * FROM tbl_3
RIGHT JOIN tbl_1 ON tbl_1.id=tbl_3.tbl_1_id
RIGHT JOIN tbl_2 ON tbl_2.id=tbl_3.tbl_1_id
WHERE tbl_3.id='some_id';
**编辑:在解释上面带有多重连接的查询时,left table 是否被返回的第二个 RIGHT JOIN
引用table那是第一个的乘积RIGHT JOIN
?
以下查询仅是您可以用来显示 TBL_1
和 TBL_2
中出现在桥 table 中的所有 id
对的信息的行TBL_3
:
SELECT t1.foo, t2.bar
FROM TBL_1 t1
INNER JOIN TBL_3 t3
ON t1.id = t3.TBL_1_id
INNER JOIN TBL_2 t2
ON t2.id = t3.TBL_2_id
SELECT t1.foo, t2.bar
FROM TBL_1 t1
left join TBL_3 t3
ON t1.id = t3.TBL_1_id
left JOIN TBL_2 t2
ON t2.id = t3.TBL_2_id;
---------- ---------- ----------
| TBL_1 | | TBL_2 | | TBL_3 |
---------- ---------- ----------
| id | | id | |TBL_1_id|
| foo | | bar | |TBL_2_id|
---------- ---------- ----------
我,有点,在 MySQL 中有这组特定的 table。 TBL_3 是一个复合 table 将 TBL_1 和 TBL_2 中的行绑定在一起。我想通过查询 TBL_3 输出 TBL_1 和 TBL_2 的内容,但我似乎无法掌握 JOIN
s.
的概念
根据我读过的内容,它应该是这样的:
SELECT * FROM tbl_3
RIGHT JOIN (tbl_1, tbl_2) ON (tbl_1.id=tbl_3.tbl_1_id, tbl_2.id=tbl_3.tbl_2_id)
WHERE tbl_3.id='some_id';
我一无所获。此外,当我调整该查询时,有时会返回行但从未显示 IDK 为什么。这是为什么?
**上面的查询,和这个一样吗?
SELECT * FROM tbl_3
RIGHT JOIN tbl_1 ON tbl_1.id=tbl_3.tbl_1_id
RIGHT JOIN tbl_2 ON tbl_2.id=tbl_3.tbl_1_id
WHERE tbl_3.id='some_id';
**编辑:在解释上面带有多重连接的查询时,left table 是否被返回的第二个 RIGHT JOIN
引用table那是第一个的乘积RIGHT JOIN
?
以下查询仅是您可以用来显示 TBL_1
和 TBL_2
中出现在桥 table 中的所有 id
对的信息的行TBL_3
:
SELECT t1.foo, t2.bar
FROM TBL_1 t1
INNER JOIN TBL_3 t3
ON t1.id = t3.TBL_1_id
INNER JOIN TBL_2 t2
ON t2.id = t3.TBL_2_id
SELECT t1.foo, t2.bar
FROM TBL_1 t1
left join TBL_3 t3
ON t1.id = t3.TBL_1_id
left JOIN TBL_2 t2
ON t2.id = t3.TBL_2_id;