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

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

Barbara Streisand
发布: 2025-01-24 01:37:12
原创
976 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板