当前位置:   article > 正文

Sql多表查询大全

Sql多表查询大全

多表查询是SQL中一个重要的概念,它允许你从多个表中选择数据。以下是一些常见的多表查询技术和示例:

 

### 1. 内连接(INNER JOIN)

内连接是最常见的连接类型,它只返回两个表中匹配的记录。

 

```sql

SELECT A.*, B.*

FROM TableA A

INNER JOIN TableB B ON A.id = B.id;

```

 

### 2. 左连接(LEFT JOIN)

左连接返回左表中的所有记录,即使右表中没有匹配的记录。

 

```sql

SELECT A.*, B.*

FROM TableA A

LEFT JOIN TableB B ON A.id = B.id;

```

 

### 3. 右连接(RIGHT JOIN)

右连接返回右表中的所有记录,即使左表中没有匹配的记录。

 

```sql

SELECT A.*, B.*

FROM TableA A

RIGHT JOIN TableB B ON A.id = B.id;

```

 

### 4. 全连接(FULL JOIN)

全连接返回两个表中的所有记录,只要其中至少一个表中有匹配的记录。

 

```sql

SELECT A.*, B.*

FROM TableA A

FULL OUTER JOIN TableB B ON A.id = B.id;

```

 

### 5. 交叉连接(CROSS JOIN)

交叉连接返回两个表的笛卡尔积。

 

```sql

SELECT A.*, B.*

FROM TableA A

CROSS JOIN TableB B;

```

 

### 6. 自连接(Self Join)

自连接是一个表与其自身的连接。

 

```sql

SELECT A.*, B.*

FROM TableA A

INNER JOIN TableA B ON A.parent_id = B.id;

```

 

### 7. 联合(UNION)

联合操作用于将两个或多个SELECT语句的结果集组合成一个结果集。

 

```sql

SELECT column1, column2 FROM TableA

UNION

SELECT column1, column2 FROM TableB;

```

 

### 8. 子查询(Subquery)

子查询用于在一个查询中嵌套另一个查询。

 

```sql

SELECT A.*, 

       (SELECT MAX(B.value) 

        FROM TableB B 

        WHERE B.id = A.id) AS max_value

FROM TableA A;

```

 

### 9. 复杂查询示例

以下是一个更复杂的查询示例,涉及多个连接和子查询。

 

```sql

SELECT A.id, A.name, B.total, C.avg_value

FROM TableA A

INNER JOIN (SELECT id, COUNT(*) AS total FROM TableB GROUP BY id) B ON A.id = B.id

LEFT JOIN (SELECT id, AVG(value) AS avg_value FROM TableC GROUP BY id) C ON A.id = C.id

WHERE A.status = 'active';

```

 

### 10. 使用别名

使用别名可以使查询更简洁易读。

 

```sql

SELECT A.id AS user_id, A.name AS user_name, B.order_count

FROM Users A

INNER JOIN (SELECT user_id, COUNT(*) AS order_count FROM Orders GROUP BY user_id) B

ON A.id = B.user_id;

```

 

这些只是多表查询的一部分,实际应用中可能会更加复杂。希望这些示例对你有所帮助!如果有任何具体的问题,欢迎随时提问。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/1020660
推荐阅读
相关标签
  

闽ICP备14008679号