`

表的自连接同子查询有区别?

SQL 
阅读更多

运用自连接同子查询之间有什么区别?请大家给点意见

 

SELECT R1.readerid,R1.readername,R1.unit,R1.bookcount
FROM ReaderInfo AS R1,ReaderInfo AS R2
WHERE R2.readerid=9704
AND R1.bookcount>R2.bookcount     --连接关系
ORDER BY R1.bookcount

 

 

 

SELECT readerid,readername,unit,bookcount
FROM ReaderInfo
WHERE bookcount>(SELECT bookcount   --使用子查询
FROM ReaderInfo
WHERE readerid=9704)
ORDER BY bookcount

分享到:
评论
4 楼 gaohuier 2009-02-16  
你应该从执行这条SQL的效率方面去思考用哪一个?
3 楼 beyondsanli 2008-06-25  
谢谢  armorking martri的指教
2 楼 armorking 2008-06-24  
方式二要求下面这个子查询的检索结果最多只有一条记录
SELECT bookcount   --使用子查询
FROM ReaderInfo
WHERE readerid=9704

方式一没有这个限制

不过,当这个子查询的结果有多条结果的时候
方式一得到的是个迪卡尔积

这种情况下,为了避免因为迪卡尔积而得到重复纪录,可以用exists方式


SELECT R1.readerid, R1.readername, R1.unit, R1.bookcount
FROM ReaderInfo A
WHERE exists
(
    select 1
    from ReaderInfo R2
    where R2.readerid=9704
    and R2.bookcount < R1.bookcount
)
ORDER BY R1.bookcount
1 楼 martri 2008-06-23  
那要看数据库操作系统的的实现,在各个数据库其中实现方式略有不同,最好是看一下其执行计划~~~~~~

相关推荐

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    5、子查询 6、合并查询结果 7、为表和字段取别名 8、使用正则表达式查询 什么是查询? 怎么查的? 数据的准备如下: [sql] view plain copy create table STUDENT( STU_ID int primary KEY, STU_NAME char(10) ...

    0.6 MySQL表基础连接

    基础表连接有多种类型,包括等值连接、非等值连接、自连接等。 等值连接 等值连接是指两个表之间的连接,条件是两个表中的某一列的值相等。例如,选择两个表中的所有记录,其中每个记录的某一列的值相等。 非等值...

    sql数据库子查询.zip

    3. **相关子查询**:主查询和子查询之间有依赖关系,即子查询的执行依赖于主查询中的某个值。例如,找出每个部门中薪水最高的员工,需要在子查询中引用外层查询的部门ID。 4. **嵌套子查询**:一个查询内嵌套另一个...

    数据库练习四(内连接外连接)答案.doc

    数据库实践四(内连接外连接)答案是一个关于数据库操作的实践题目,涵盖了数据库的基本操作,包括内连接、外连接、子查询等。下面对每个题目进行详细的解释和分析: 一、创建学生表、成绩表、课程表 首先,我们...

    MLDN魔乐科技_Oracle课堂11_子查询

    - **FROM子句**:在FROM子句中使用子查询创建临时表,常用于自连接。 - **WHERE子句**:作为条件来过滤数据,是最常见的子查询应用。 - **HAVING子句**:在聚合查询中,用于过滤分组后的结果。 3. **子查询的...

    数据库选择查询

    通过本实验,我们将学习如何使用 T-SQL 语句进行简单查询和连接查询,掌握 SELECT 语句的基本结构和多表连接查询、子查询、统计函数的应用、分组查询、查询结果的排序等操作。 实验目的 本实验的目的是要查询学生...

    update 子查询使用介绍

    本文将深入探讨`UPDATE`子查询的使用、关联子查询与非关联子查询的区别、提示(HINT)的使用以及执行计划的查看,并提供实际示例。 1. **关联子查询与非关联子查询** - **关联子查询**:在关联子查询中,外部查询...

    SQL语言查询基础:连接查询 联合查询 代码

    SQL语言查询基础:连接查询 通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,...

    实验05_连接查询1

    例如,查询有“计算机”商品的店铺信息,可以使用`INNER JOIN`或简单的`JOIN`,连接商品表和店铺表,匹配商品名为“计算机”的记录。 2. **非等值连接**:这种连接允许用户根据指定的不同条件合并记录。在本实验中...

    IN 和 EXIST的区别

    - 当子查询表较大时,使用“EXISTS”通常优于使用“IN”,因为它避免了对外部表的哈希连接操作,而是通过循环外部表并针对每次循环执行内部表的查询来工作。 - 反之,如果子查询表较小,使用“IN”可能更优,因为它...

    SQL查询语言技术8

    子查询有一些基本规则需要注意: - 子查询可以出现在SELECT、FROM、WHERE和HAVING子句中。 - 子查询可以返回单个值或多行值,具体取决于外部查询的需求。 - 子查询也可以嵌套在其他子查询中。 #### 五、子查询的...

    SQL数据库(Mysql进阶) - Git1

    * 自连接(Self-Join):将一个表与自己连接,以便查询同一个表中的数据。 * Group By 和 Having 查询:对查询结果进行分组,并对分组结果进行过滤。 * 子查询:在一个查询语句中嵌套另一个查询语句,以便实现更加...

    PostgreSQL和Oracle区别

    - **PostgreSQL**则使用`LEFT OUTER JOIN`来实现外连接,其语法更加直观,子查询也更为规范,要求子查询的结果集必须有别名。 ### 6. 子查询规范性 在**PostgreSQL**中,子查询的规范性更高,要求子查询的结果集...

    Dbvis9.2.8连接TDengine

    8. **性能优化**: TDengine特有的超级表和子表结构可以有效地存储和处理大量时序数据,通过Dbvis,你可以更好地利用这些特性进行数据组织和查询优化。 9. **监控与管理**: 除了基本的数据操作,Dbvis还可以帮助你...

    经典mysql面试题20道经典mysql面试题20道

    10. **内连接、左连接和右连接的区别**? - 内连接返回两个表中匹配的行。 - 左连接返回左表的所有行,即使右表中没有匹配项。 - 右连接返回右表的所有行,即使左表中没有匹配项。 11. **分组和排序是什么**? ...

    sql查询语句——关系代数.pdf

    子查询可以在外部查询中使用表达式、列表或者数据集合的地方,连接可以在水平方向上合并两个表,并产生一个新的结果集合。 连接类型有多种,它们之间的区别在于从相互交叠的不同数据集合中选择用于连接的行时所采用...

    数据库管理与应用-3期(KC004) 任务3-2复杂查询教学设计.doc

    6. **课堂总结**:回顾多表查询的关键连接条件和子查询的应用,强调重要点,引导学生整理笔记。 7. **课后作业**:布置拓展实训任务,如“复杂的综合查询”,以巩固和提升学生的应用能力。 ### 实战训练 - 课堂总结...

    mySQL中in查询与exists查询的区别小结

    MySQL中的`IN`查询和`EXISTS`查询都是在处理子查询时常用的操作,它们各自有不同的特性和适用场景。理解两者的区别对于优化SQL查询性能至关重要。 ### `IN`查询 `IN`查询通常用于检查某列的值是否在特定的值列表中...

    CDA LEVEL I 模拟考试一 (2021年题库)

    本模拟考试涵盖了数据分析师的多个领域,包括卡方检验、分类数据、缺失值填充、SQL函数、聚合函数、子查询、连接查询等。 本文将对每个问题进行详细的解释和分析,帮助考生更好地理解和掌握这些知识点。 1. 卡方...

Global site tag (gtag.js) - Google Analytics