首页 >数据库 >mysql教程 >如何使用 SQL 连接和联合高效地从多个表中检索数据?

如何使用 SQL 连接和联合高效地从多个表中检索数据?

Barbara Streisand
Barbara Streisand原创
2025-01-24 01:37:12935浏览

How Can I Efficiently Retrieve Data from Multiple Tables Using SQL Joins and Unions?

从多个表返回数据的 SQL 查询

联接和并集

  • 内联接: 基于公共列组合两个表中的行,仅返回匹配的行。 (有关更多信息,请参阅维基百科)
  • 并集: 组合多个查询的结果,但删除重复的行。
  • 左外连接: 包括左表中的所有行以及右表中的匹配行,但忽略右表中不匹配的行表。
  • 右外连接: 包括右表中的所有行和左表中的匹配行,但忽略左表中不匹配的行。
  • Intersect: 仅返回多个表中相同的行。 (并非所有数据库都支持)

示例

内连接:从“汽车”和“模型”中检索数据表:

SELECT
    c.ID,
    m.model
FROM
    cars c
INNER JOIN
    models m
ON
    c.model = m.ID

并集: 合并两个查询的结果以获取所有跑车和 4WD:

SELECT
    c.ID,
    m.model
FROM
    cars c
INNER JOIN
    models m
ON
    c.model = m.ID
WHERE
    m.ID = 1
UNION
SELECT
    c.ID,
    m.model
FROM
    cars c
INNER JOIN
    models m
ON
    c.model = m.ID
WHERE
    m.ID = 3

左外连接: 查找所有品牌及其汽车数量,包括没有任何品牌的品牌cars:

SELECT
    b.brand,
    COUNT(c.id) AS countOfBrand
FROM
    brands b
LEFT OUTER JOIN
    cars c
ON
    b.ID = c.brand
GROUP BY
    b.brand

相交: 仅检索“颜色”和“型号”表中相同的行:

SELECT
    m.model,
    c.color
FROM
    models m
INNER JOIN
    colors c
ON
    m.ID = c.ID
WHERE
    m.model = 'Sports' AND c.color = 'Red'

以上是如何使用 SQL 连接和联合高效地从多个表中检索数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn