当前位置:首页 > 编程技术 > 正文

mysql两张表如何关联查询

mysql两张表如何关联查询

在MySQL中,通过关联查询(JOIN)可以结合两张或更多表中的数据。以下是几种常见的关联查询方式: 1. 内连接(INNER JOIN)内连接只会返回两个表中匹配的行...

在MySQL中,通过关联查询(JOIN)可以结合两张或更多表中的数据。以下是几种常见的关联查询方式:

1. 内连接(INNER JOIN)

内连接只会返回两个表中匹配的行。

```sql

SELECT column_name(s)

FROM table1

INNER JOIN table2

ON table1.column_name = table2.column_name;

```

2. 左连接(LEFT JOIN)

左连接会返回左表(table1)的所有行,即使右表(table2)中没有匹配的行。

```sql

SELECT column_name(s)

FROM table1

LEFT JOIN table2

ON table1.column_name = table2.column_name;

```

3. 右连接(RIGHT JOIN)

右连接会返回右表(table2)的所有行,即使左表(table1)中没有匹配的行。

```sql

SELECT column_name(s)

FROM table1

RIGHT JOIN table2

ON table1.column_name = table2.column_name;

```

4. 全连接(FULL JOIN)

全连接会返回左表和右表中的所有行,即使它们没有匹配的行。

```sql

SELECT column_name(s)

FROM table1

FULL JOIN table2

ON table1.column_name = table2.column_name;

```

请注意,MySQL 8.0之前,全连接需要使用`(LEFT JOIN ...) UNION (RIGHT JOIN ...)`来实现。

示例

假设我们有两个表:`students`和`courses`。

`students`表:

id name

-----------

1 Alice

2 Bob

3 Charlie

`courses`表:

id name

--------------

1 Math

2 Science

3 English

我们可以通过以下查询来获取所有学生的名字和他们的课程名字:

```sql

SELECT students.name, courses.name

FROM students

INNER JOIN courses

ON students.id = courses.id;

```

这将返回:

name name

-----------------

Alice Math

Bob Science

Charlie English

根据需要,你可以选择不同的JOIN类型来获取不同的结果。

最新文章