我有2张桌子。我想打印 table1 中的所有访问列表,以及table2中的接口。但是一些访问列表没有与访问列表相关联的接口(但我仍然想要打印这些访问列表)。我该怎么做呢? (我无法得到理想的结果._。)
表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
答案 0 :(得分:0)
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
。