• SQLServer连接表


    SQL Server内连接

    内连接是SQL Server中最常用的连接之一。 内部联接子句用于查询来自两个或多个相关表的数据。

    SQL Server INNER JOIN 子句的语法: 

    SELECT

    select_list

    FROM T1

    INNER JOIN T2 ON join_predicate;

    在此语法中,从 T1 T2 表中查询检索数据:

    ●首先,在 FROM 子句中指定主表( T1 )

    ●其次,在 INNER JOIN 子句和连接谓词中指定第二个表( T2 )。 只有连接谓词计算为 TRUE 的行才包含在结果集中。

    INNER JOIN 子句将表 T1 的每一行与表 T2 的行进行比较,以查找满足连接谓词的所有行对。 如果连接谓词的计算结果为 TRUE ,则匹配

    T1 T2 行的列值将合并为一个新行并包含在结果集中。

    SQL Server左连接

    LEFT JOIN 子句用于查询来自多个表的数据。

    它返回左表中的所有行和右表中的匹配行。

    如果在右表中找不到匹配的行,则使用 NULL 代替显示。

    以下说明如何使用 LEFT JOIN 子句来连接两个表 T1 和 T2 :

    SELECT

    select_list

    FROM T1

    LEFT JOIN T2 ON join_predicate;

    在上面语法中, T1 和 T2 分别是左表和右表。

    对于 T1 表中的每一行,查询将其与 T2 表中的所有行进行比较。

    如果一对行导致连接谓词计算为 TRUE ,则将组合这些行中的列值以形成新行,然后将其包含在结果集中。

    如果左表( T1 )中的行没有与来自 T2 表的任何匹配行,则查询将左表中的行的列值与来自右表的每个列值的 NULL 组合。

    简而言之, LEFT JOIN 子句返回左表( T1 )中的所有行以及右表( T2 )中匹配的行或 NULL 值

    以下语句使用 LEFT JOIN 子句查询 products 和 order_items 表中的数据:

    order_id 列中的 NULL 列表表明相应的产品尚未销售给任何客户

    SELECT

    product_name,

    order_id

    FROM

    production.products p

    LEFT JOIN sales.order_items o ON o.product_id = p.product_id

    ORDER BY

    order_id;

    ON与WHERE子句

    以下查询查找属于订单ID为 100 的产品:

    SELECT

    product_name, order_id

    FROM production.products p

    LEFT JOIN sales.order_items o ON o.product_id = p.product_id

    WHERE order_id = 100

    ORDER BY order_id;

    如果将条件 order_id = 100 移动到 ON 子句: 

    SELECT

    p.product_id,

    product_name, order_id

    FROM production.products p

    LEFT JOIN sales.order_items o ON o.product_id = p.product_id AND p.product_id = 100

    ORDER BY order_id DESC;

    查询返回了所有产品,但只有ID为 100 的产品具有关联的订单数据。

    请注意,对于 INNER JOIN 子句,如果将 ON 子句中的条件放在 WHERE 子句中,则它在功能上是等效的

    SQL Server右连接

    RIGHT JOIN 子句组合来自两个或多个表的数据。 RIGHT JOIN 开始从右表中选择数据并与左表中的行匹配。 RIGHT JOIN 返回一个结果集,该结果集包含右表中的所有行,无论是否具有左表中的匹配行。

    如果右表中的行没有来自右表的任何匹配行,则结果集中右表的列将使用 NULL 值。

    以下是 RIGHT JOIN 的语法: 

    SELECT select_list

    FROM T1

    RIGHT JOIN T2 ON join_predicate;

    在此语法中, T1 是左表, T2 是右表。

    请注意, RIGHT JOIN 和 RIGHT OUTER JOIN 是相同的。 OUTER 关键字是可选的。

  • 相关阅读:
    KL散度与率失真优化问题
    【背景渐变】 —— 就算没接触过也能 一遍学会哦
    ArduPilot开源飞控之AP_Baro_SITL
    JVM虚拟机浅谈(四)
    实验.RIP附加度量值,RIP子网汇聚,rip计时器配置,RIP与不连续子网,RIP的水平分割及触发更新,配置RIP的版本兼容、定时器及协议优先级
    nacos简单使用
    那个名为 XROS 的操作系统,倒在了元宇宙浪潮中
    Swin-Transformer(2021-08)
    html语音播报功能问题
    【过滤器设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
  • 原文地址:https://blog.csdn.net/weixin_47300323/article/details/126081384