`

[收藏]sql多表查询之一:Where 和 On的秘密

阅读更多

对于还在SQL初级阶段的朋友来说,sql多表查询问题是一个比较有趣也容易出错的技术。什么时候会用到sql多表查询呢?是在两张或两张以上表单中通过某几个字段进行互联管理的时候,这就不得不说说sql多表查询中Where 和 On的秘密。

 

在了解 sql多表查询中 Where 和 On的秘密之前,让我们先来温习一下连接基础吧


按列 a 把两表连接,请问各种连接方式的结果的结果?

语法呢?

    select * from @a Aa left join @b Bb on Aa.a =Bb.a

    select * from @a Aa right join @b Bb on Aa.a =Bb.a

    select * from @a Aa join @b Bb on Aa.a =Bb.a

完全        select * from @a Aa full join @b Bb on Aa.a =Bb.a

迪卡尔     select * from @a,@b

是不是很简单呢,接下来我们来看sql多表查询中 Where 和 On的秘密:)

 

大家想想,依据下表

下面语句出来的结果是什么?

 

select * from @a _a left join @b _b on _a.id =_b.id where _b.name =1

select * from @a _a left join @b _b on _a.id =_b.id and _b.name =1

先想想,再看结果吧 ^_*

sql多表查询中 Where On 的秘密 SQLserver 中的执行顺序是: join where

所以,当条件写在 where 里,结果如下:

件写在 on 里,结果如下:

Where On是不是很有趣, 你也试试吧!

 

下一个

请说出下面语句各返回多少记录

select * from @a a left join @b b on a.id =b.id where a.id =1

select * from @a a left join @b b on a.id =b.id and b.id =1

select * from @a a left join @b b on a.id =b.id and a.id =1

select * from @a a left join @b b on a.id =1

先想想,再看答案: P

        select * from @a a left join @b b on a.id =b.id where a.id =1

 

        原因是先执行连接条件 , 再执行 where 部分 , 所以只有 1 条记录

 

        select * from @a a left join @b b on a.id =b.id and b.id =1

 

        原因是满足 a.id =b.id and a.id =1 条件的只有一条 , left join 是对没有附和条件的加 null 处理 , 所以最后结果是 3

 

        select * from @a a left join @b b on a.id =b.id and a.id =1

 

        原因是满足 a.id =b.id and a.id =1 条件的只有一条 , left join 是对没有附和条件的加 null 处理 , 所以最后结果是 3

 

        select * from @a a left join @b b on a.id =1

 

        原因是在做完迪卡尔后 , 满足 a.id =1 条件的有 3 , left join 是对没有附和条件的加 null 处理 , 所以最后结果是 5

 

 

分享到:
评论

相关推荐

    Sql Server参数化查询之where in和like实现详解

    Sql Server参数化查询之where in和like实现详解 在Sql Server中,参数化查询是提高查询性能和防止SQL注入攻击的有效方法之一。其中,where in和like是两个常用的查询条件,然而它们的参数化实现却不是那么简单。...

    sqlserver的存储过程与 where in 多值参数

    本文将探讨在SQL Server中,存储过程与`WHERE IN`子句结合使用时,处理多值参数的几种方法。 **方法一:拼接SQL字符串并调用`EXEC`** 这是最简单也是最直观的方法。你可以在存储过程中接收一个包含多个值的参数,...

    Microsoft SQL Server 2005技术内幕:T-SQL查询的源代码

    T-SQL(Transact-SQL)是Microsoft SQL Server数据库管理系统中用于数据操作、查询、存储过程和数据库控制的一种扩展SQL语法。此书主要关注于如何高效地使用T-SQL进行数据检索和处理,为数据库管理员和开发人员提供...

    sql查询左连接on与where的区别(2).pdf

    在进行数据库查询时,使用SQL语言的Left Join操作是一项基础但非常重要的技术,特别是对于需要从两个相关联的数据表中提取信息的场景。Left Join操作能够将左表(left table)的所有记录与右表(right table)中匹配...

    SQL Server2005 技术内幕:T-SQL查询(笔记).docx

    3.查询筛选器:On 筛选器和 Where 筛选器都可以用来筛选数据,但 On 筛选器无法排除由外联接添加的外部行,而 Where 筛选器可以。所有的查询筛选器都会把 UNKNOWN 作为 False 来处理。 4.聚合函数:聚合函数会忽略 ...

    浅析SQL中WHERE EXISTS子查询.pdf

    SQL(Structured Query Language)是一种功能强大、通用的关系数据库语言,而SQL语言的核心是SELECT语句,其中WHERE子句的条件表达式表现得灵活而复杂,和谓词DISJunctive所形成的嵌套查询也成为部分人理解的难点。...

    Microsoft_SQL_Server_2005技术内幕:T-SQL查询.pdf

    它详细介绍了T-SQL的内部体系结构,包含了非常全面的编程参考,提供了使用Transact-SQL(T-SQL)的专家级指导,囊括了非常全面的编程参考,揭示了基于集合的查询的强大威力,并包含大量来自专家们的参考和建议。...

    SQL WHERE 条件解析器

    总结来说,`SQL WHERE 条件解析器`是数据库应用开发中的一个重要辅助工具,它能帮助开发者有效地处理和构建复杂的查询条件,提高代码的可读性和可维护性。在列表控件等场景中,它简化了动态SQL生成的过程,使得数据...

    SQL _join on 和where的执行顺序1

    总结,ON和WHERE子句在JOIN操作中的作用不同:ON定义了表间连接的基础,而WHERE则对最终结果进行过滤。对于LEFT JOIN、RIGHT JOIN和FULL JOIN,ON条件的过滤是在生成中间表时进行的,而WHERE是在中间表生成后应用。...

    SQL根据表中某列队值选择关联不同的表

    ### SQL根据表中某列对值选择关联不同的表 在实际的数据处理过程中,经常会遇到根据一个表中的某个字段值来决定与其他哪些表进行关联的情况。这种情况可以通过多种方式来实现,其中最常见的两种方法是使用`CASE`...

    sql语句学习 多表连接查询

    自己学习的笔记--查询计算机系CS男学生学号、姓名和考试成绩 SELECT A.Sno,A.Sname,B.degree FROM student A,sc B WHERE A.Sdept = 'CS' AND A.Ssex = '男' AND A.Sno = B.sno SELECT A.Sno,A.Sname,B.degree FROM ...

    SQL语句查询数据表主键和所有字段

    在数据库管理中,了解如何通过SQL语句查询数据表的主键和所有字段是一项基本而重要的技能。这不仅有助于数据库管理员或开发人员更好地理解数据库结构,还能在进行数据操作、优化查询性能或解决数据完整性问题时提供...

    sql多表关联查询语法详解

    在SQL(Structured Query Language)中,多表关联查询是数据操作的核心部分,它允许我们从多个相关表中获取数据。本篇文章将详细讲解SQL中的左外连接、右外连接以及嵌套查询,帮助你深入理解这些重要概念。 一、左...

    SQL多表查询(推荐文档).ppt

    在SQL中,多表查询是数据检索的核心技巧之一,尤其在处理复杂的数据库结构时显得尤为重要。本篇将详细解析如何进行SQL多表查询,并通过具体的示例来加深理解。 首先,我们从简单的单表查询开始。例如,查询选修了...

    Spotlight on SQL Server

    "Spotlight on SQL Server"很可能是指一款专门针对SQL Server的监控和性能优化工具,它可以帮助管理员深入了解SQL Server的运行状态,识别并解决性能瓶颈。 1. **SQL Server基础知识**:SQL Server是一个全面的...

    SQL.zip_sql:查询一个人

    在SQL(Structured Query Language,结构化查询语言)中,查询一个人的信息通常涉及到多个表的联接操作,因为个人信息可能分布在不同的数据库表中,如用户表、订单表、地址表等。下面我们将深入探讨如何通过SQL语句...

    SQL中on条件与where条件的区别

    SQL中on条件与where条件的区别基础知识

    查询表结构的sql语句

    在SQL(Structured Query Language)中,查询数据库中的表结构是常见的操作,特别是在数据库设计、开发或维护时。这里我们关注的是T-SQL,它是Microsoft SQL Server所使用的SQL方言。T-SQL提供了多种方法来获取表的...

    SQL数据的查询和更新实验报告报告.pdf

    【SQL数据查询与更新实验报告】的实验主要涵盖了SQL语言中的关键操作,旨在让学生熟练掌握对数据库进行数据查询和更新的方法。以下是对实验内容的详细解释: ### 1. SQL数据查询 #### 1.1 单表查询 - **查询所有列...

    Oracle四大宝典之一:Oracle Sql基础 中文版

    第四章 从多表中查询数据 第五章 用组函数合计数据 第六章 子查询 第七章 操纵数据 第八章 创建和管理表 第九章 内置约束 第十章 创建视图 第十一章 其他数据库对象 第十二章 控制用户访问 第十三章 SQL与SQL*Plus

Global site tag (gtag.js) - Google Analytics