`

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

SQL 
阅读更多

对于还在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.聚合函数:聚合函数会忽略 ...

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

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

    SQL WHERE 条件解析器

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

    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多表查询(推荐文档).ppt

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

    Spotlight on SQL Server

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

    数据库实验一多表查询

    本实验报告的主要目的是让学生掌握多表查询的基本概念和语法,熟悉使用 SQL 语句对单表进行查询,并且掌握 SQL Server 所提供的函数。实验中,学生需要使用 SQL 语句对订单数据库 OrderDB 中的数据进行查询,完成...

    SQL.zip_sql:查询一个人

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

    查询表结构的sql语句

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

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

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

    金蝶K3CLOUD 常用SQL

    金蝶K3CLOUD 常用SQL ...金蝶K3CLOUD 中的SQL语句可以用于查询和管理物料、组织、元数据、部门、单据转换、反写规则、参数设置、枚举值、单据类型、菜单操作、服务管理、用户管理和IDE 函数等多个方面的信息。

    SQL语句之条件查询-WHERE(where).docx

    在SQL查询中,`WHERE`子句是至关重要的部分,它允许我们根据特定的条件过滤结果集。在本文中,我们将深入探讨`WHERE`子句的使用,包括条件表达式筛选、逻辑表达式筛选以及模糊查询等不同类型的筛选方法。 首先,让...

    sql语句经典查询帖子收藏.

    这个"sql语句经典查询帖子收藏"很显然是一个集合,包含了一系列实用且常见的SQL查询示例,对于学习和提升SQL技能非常有帮助。下面我们将深入探讨一些SQL查询的关键知识点。 1. **基础查询**:SQL的基础查询包括...

    informix数据库SQL查询语言及应用

    综上所述,Informix数据库的SQL查询语言是其核心功能之一,掌握SQL的应用不仅能够有效管理和操作数据库,也是开发高效应用程序的基础。理解SQL的基本语法和高级特性,结合Informix的特性和最佳实践,可以实现更高效...

    SQL多表连接查询、多表关联

    sql多表连接查询inner join, left join , right join ,full join ,cross join Posted on 2008-05-07 21:55 我开始懂了 阅读(21431) 评论(9) 编辑 收藏 inner join,full outer join,left join,right jion 内部连接 ...

Global site tag (gtag.js) - Google Analytics