我有 2 个表。我想打印出 table1 中的所有访问列表,以及 table2 中的接口(interface)。但是一些访问列表没有与访问列表关联的接口(interface)(但我仍然想打印这些访问列表)。我该怎么做呢? (我就是得不到想要的结果result._.)
表1
| id | access-list | ...
+----+--------------+
| 0 | list_1 | ...
| 1 | list_2 | ...
| 2 | list_3 | ...
| 3 | list_4 | ...
表2
| id | access-list | interface |
+----+--------------+-----------+
| 0 | list_1 | iface0 |
| 1 | list_4 | iface1 |
预期结果:
0 list_1 iface0 bla bla bla
1 list_2 bla bla bla
2 list_3 bla bla bla
3 list_4 iface1 bla bla bla
最佳答案
SELECT *
FROM table1 t1
LEFT JOIN table2 t2
ON t1.access_list = t2.access_list
当您需要一个表中的所有数据,并且只需要另一个表中匹配的数据时,OUTER JOIN
通常是可行的方法。 LEFT JOIN
实际上是LEFT OUTER JOIN
的缩写,指定哪个表(JOIN
语句左边的那个)将拥有所有的数据返回。您始终可以使用 RIGHT JOIN
并以相反的方式命名表(即 table1 LEFT JOIN table2
等同于 table2 RIGHT JOIN table1
) , 但 LEFT JOIN
语法更为常见。
仅从两个表返回匹配数据的联接称为 INNER JOIN
,通常缩写为 JOIN
。
关于php - MySQL查询从多个表中选择,显示全部来自table1 +来自table2的一些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30171291/