📜  SQL查询多个表(1)

📅  最后修改于: 2023-12-03 15:20:19.760000             🧑  作者: Mango

SQL查询多个表

在SQL中,可以通过JOIN、UNION等方式查询多个表。下面将介绍几种SQL查询多个表的方式。

INNER JOIN查询多个表

INNER JOIN是连接两个或多个表的最常用方式,返回匹配关系的行。

SELECT *
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name

在上面的例子中,我们查询了table1和table2两个表中,满足条件table1.column_name = table2.column_name的所有行。

OUTER JOIN查询多个表

OUTER JOIN可用于查询多个表间存在关系的行,包括LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN。

SELECT *
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name

在上面的例子中,我们查询了table1和table2两个表中,所有table1中的行以及与之匹配的table2中的行。如果某些行没有匹配,它们将返回NULL。

UNION查询多个表

UNION用于合并多个SELECT语句的结果集,并去除重复行。

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2

在上面的例子中,我们将table1和table2中指定的列进行合并,并去除重复的行。

SUBQUERY查询多个表

SUBQUERY是一种在SELECT语句中嵌套查询的方式。

SELECT *
FROM table1
WHERE column_name IN (
  SELECT column_name
  FROM table2
)

在上面的例子中,我们在table1的SELECT语句中使用了一个子查询,从table2的column_name中获取了一组值,并通过IN操作符将其与table1匹配。

CTE查询多个表

公用表表达式(CTE)允许在一个查询中定义临时结果集,以便在后续的查询中使用它。

WITH cte_name AS (
  SELECT column_name
  FROM table1
),
cte_name2 AS (
  SELECT column_name
  FROM table2
)
SELECT *
FROM cte_name
INNER JOIN cte_name2 ON cte_name.column_name = cte_name2.column_name

在上面的例子中,我们使用了两个公用表表达式来创建两个临时结果集,并将它们连接起来。在后续的SELECT语句中使用它们来查询所需的数据。

以上是SQL查询多个表的几种常见方式。我们可以根据不同的需求和业务场景,选择最适合的方式来进行查询。