数据库连接(join)查询语句
连接(join连接,联结)从两个或更多的表中获取结果——连接的含义是在于在水平方向上组合两个或更多数据表,并产生一个新的结果集合。可以在Select 语句的FROM子句或Where子句中建立,在FROM子句中指出连接时有助于将连接操作与Where子句中的搜索条件区分开来。
Where子句的连接语法格式为:
SELECT columns
FROM table1 , table2
WHERE join_condition
FROM子句的连接语法格式为:
SELECT columns
[ON (join_condition)]
其中table1、table2指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作。对同一个表的连接又称自连接(self-join)。
join_type 指出连接类型。
join_condition 连接条件,格式:[table1].column op [table2].column
op 比较操作符:=、<>、 <、 <=、 >、 >= 。
例
假设有两张表:
A B
Id name id name
-- ---- -- ----
1 Pirate 1 Rutabaga
2 Monkey 2 Pirate
3 Ninja 3 Darth Vader
4 Spaghetti 4 Ninja
1、INNER JOIN:
SELECT A.id, A.name, B.id, B.name FROM A
INNER JOIN B
ON A.name = B.name
查询结果:
-- ---- -- ----
1 Pirate 2 Pirate
3 Ninja 4 Ninja
2、FULL OUTER JOIN:
SELECT A.id, A.name, B.id, B.name FROM A
FULL OUTER JOIN B
ON A.name = B.name
查询结果:
id name id name
-- ---- -- ----
1 Pirate 2 Pirate
2 Monkey null null
3 Ninja 4 Ninja
4 Spaghetti null null
null null 1 Rutabaga
null null 3 Darth Vader
3、LEFT OUTER JOIN
SELECT A.id, A.name, B.id, B.name FROM A
LEFT OUTER JOIN B
ON A.name = B.name
查询结果:
id name id name
-- ---- -- ----
1 Pirate 2 Pirate
2 Monkey null null
3 Ninja 4 Ninja
4 Spaghetti null null
4、RIGHT OUTER JOIN
SELECT A.id, A.name, B.id, B.name FROM A
RIGHT OUTER JOIN B
ON A.name = B.name
查询结果:
id name id name
-- ---- -- ----
null null 1 Rutabaga
1 Pirate 2 Pirate
null null 3 Darth Vader
3 Ninja 4 Ninja