10. 连接表

2018-09-10  本文已影响0人  柄志

连接表

连接

内连接(等值连接)

-- ANSI规范首选 INTER JOIN 语法
SELECT column_name1,column_name2,column_name3
FROM table1 INTER JOIN table2 INTER JOIN table3
ON table1.column_name1 = table2.column_name1;

-- 简单的等值语法

SELECT column_name1,column_name2,column_name3
FROM table1,table2
WHERE table1.column_name1 = table2.column_name1;

笛卡尔积(cartesian product)

由没有连接条件的表关系返回的结果为笛卡尔积,检索出的行的数目将是第一个表中的行数乘以第二个表中的行数。返回笛卡尔积的连接,也称叉连接。

使用表别名

SELECT column_name1,column_name2
FROM table1 AS T1, table2 AS T2
WHERE T1.column_name3 = T2.column_name3;

自连接(self-join)

SELECT T1.column_name1,T1.column_name2
FROM table1 AS T1,table2 AS T2
WHERE T1.column_name1 = T2.column_name1
  AND T2.column_name = 'str';

自然连接(natural join)

外连接(outer join)

SELECT table1.column_name1,table1.column_name2,table2.column_name3
FROM table1 LEFT OUTER JOIN table2
  ON table1.column_name1 = table2.column_name1;

使用带聚集函数的连接

SELECT table1.column_name1,
       COUNT(table2.column_name2) AS num
FROM table1 LEFT OUTER JOIN table2
  ON table1.column_name1 = table2.column_name1
-- 此处应使用GROUP BY,否则报错
GROUP BY table1.column_name1;
上一篇 下一篇

猜你喜欢

热点阅读