首页 > 数据库 >7.8 SQL Server内连接查询

7.8 SQL Server内连接查询

时间:2023-01-29 11:00:10浏览次数:36  
标签:category name id production SQL 7.8 Server 连接

SQL Server Inner Join

目录

SQL Server内连接介绍

内连接是SQL Server中最常用的连接之一。内连接子句允许您从两个或多个关联表中查询数据。

看下面产品(products)和类别(categories)表:

下面的语句从production.products中检索产品信息:

SELECT
    product_name,
    list_price,
    category_id
FROM
    production.products
ORDER BY
    product_name DESC;

查询仅返回类别Id(category_id)列表,而不是类别名称(category_name)。要将类别名称包括在结果集中,可以使用以下内连接(INNER JOIN)子句:

SELECT
    product_name,
    category_name,
    list_price
FROM
    production.products p
INNER JOIN production.categories c 
    ON c.category_id = p.category_id
ORDER BY
    product_name DESC;

在此查询中:

pc分别是production.products表和production.categories表的别名。这样就可以通过别名引用表,而不是通过表名。比如c.category_id而不是production.categories.category_id.

对于产品表(products)中的每一行数据,内连接子句都会在分类表(categories)中匹配每一行category_id相等的行。

  • 如果两行在category_id列中具有相同的值,内连接将根据SELECT列表生成一个新行,新行的列来自categoriesproducts表的行,并将这个新行输出到结果集中。
  • 如果products表中的行没有匹配上categories表中的行,内连接子句将会忽略这些行,并且不会包含到结果集当中。

SQL Server 内连接(INNER JOIN)语法

SELECT
    select_list
FROM
    T1
INNER JOIN T2 ON join_predicate;

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

  • 首先,在FROM子句中指定主表(T1)
  • 其次,在内连接子句中指定第二个表(T2)和连接条件。结果集中只包含满足连接条件的行。

内连接子句将表T1的每一行与表T2的行进行比较,以找到满足连接条件的所有行。如果满足连接条件,则两表中的这两个行匹配上,匹配上的行的列值将合并为新行并包含在结果集中。

下表说明了两个表T1(1,2,3)和T2(A,B,C)的内连接。结果包括行:(2,A)和(3,B),因为它们具有相同的图案。

注意:INNER关键字时可选的:

SELECT
    select_list
FROM
    T1
JOIN T2 ON join_predicate;

更多的SQL Server内连接示例

下面三个表:产品表(products),分类表(categories),品牌表(brands):

使用两个内连接INNER JOIN子句从三个表中查询数据:

SELECT
    product_name,
    category_name,
    brand_name,
    list_price
FROM
    production.products p
INNER JOIN production.categories c ON c.category_id = p.category_id
INNER JOIN production.brands b ON b.brand_id = p.brand_id
ORDER BY
    product_name DESC;

标签:category,name,id,production,SQL,7.8,Server,连接
From: https://www.cnblogs.com/michaelshen/p/17072038.html

相关文章

  • 7.7 SQL Server连接查询
    SQLServer连接查询目录SQLServer连接查询简介创建示例表SQLServer内连接SQLServer左联接SQLServer右连接SQLServer全联接简介在关系数据库中,数据分布在多个逻辑......
  • SQLSERVER 事务日志的 LSN 到底是什么?
    SQLSERVER事务日志的LSN到底是什么? 一:背景1.讲故事大家都知道数据库应用程序 它天生需要围绕着数据文件打转,诸如包含数据的 .mdf,事务日志的 .ldf,很多时候深......
  • docker安装Mysql5.7
    Linuxdocker安装Mysql1.docker镜像地址配置vim/etc/docker/daemon.json2.加入配置信息{"registry-mirrors":["https://wghlmi3i.mirror.aliyuncs.com","https://d......
  • MySQL基础:通过SQL对数据库进行CRUD
    MySQL基础今日目标:能通过SQL对数据库进行CRUD文章目录MySQL基础一、MySQL数据模型二、SQL概述2.1SQL简介2.2通用语法2.3SQL分类三、DDL:操作数据库3.1查询3.2创建数据......
  • PaddlePaddle与Serverless架构结合
    PaddlePaddle介绍PaddlePaddle(飞桨)以百度多年的深度学习技术研究和业务应用为基础,是中国首个自主研发、功能完备、开源的产业级深度学习平台,集深度学习核心训练和推理框架、......
  • 文本情感分析在Serverless架构下的应用
    文本情感分析是指对包含人们观点、喜好、情感等的主观性文本进行检测。该领域的发展和快速起步得益于社交媒体。越来越多的用户从单纯地获取互联网信息向创造互联网信息转变......
  • PyTorch与Serverless架构结合
    PyTorch介绍2017年1月,FAIR(FacebookAIResearch)发布了PyTorch。其标志如下所示。PyTorch是在Torch基础上用Python语言重新打造的一款深度学习框架,Torch是用Lua语言打造的机......
  • scikit-learn与Serverless架构结合
    1scikit-learn介绍scikit-learn是一个面向Python的第三方提供的非常强力的机器学习库,简称sklearn,标志如下所示。它建立在NumPy、SciPy和Matplotlib上,包含从数据预处理到训......
  • MySql IN 和 EXISTS 的区别
    一、in关键字确定给定的值是否与子查询或列表中的值相匹配。in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。所以相对内表比......
  • MySql多字段大表的优化方法
    主从同步+读写分离:这个表在有设备条件的情况下,读写分离,这样能减少很多压力,而且数据稳定性也能提高纵向分表:根据原则,每个表最多不要超过5个索引,纵向拆分字段,将部分......