首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL自连接vs非自连接

SQL自连接和非自连接是在SQL查询中经常使用的两种方法,用于将同一表中的不同行进行比较或匹配。自连接自连接是指在同一表中进行连接操作,也就是将同一表中的不同行作为两个不同的表进行连接。...自连接通常用于查找在同一表中相关联的行。例如,假设有一个表格“员工”,其中包含员工的姓名、上级、工资等信息。现在需要查询每个员工的上级姓名,就可以使用自连接来完成。...另一个常见的非自连接场景是使用子查询,从一个表格中获取关联的数据。...现在需要查询每个订单对应的产品名称和价格,就可以使用非自连接和子查询来完成。...如果表格过多或者数据量过大,连接操作可能会导致性能下降。此外,还需要注意连接条件的正确性和表格中字段的重复命名问题。

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQL 自连接的魅力

    SQL 通常在不同的表或者视图间进行连接运算,包括 INNER JOIN、 LEFT JOIN、 RIGHT JOIN 或 CROSS JOIN,但是,有一种特殊情况,需要将一个表连接到它自己,这就是所谓的自连接...自连接的处理过程比较抽象,难以想象、难以理解,但是,一旦掌握其用法,我们便能快速的处理很多问题。 下面来看一个微信群里提到的问题,如下完成下面的转换?...这里本质上是要进行行与行之间的比较,将偶数行与奇数行合并,使用自连接再合适不过了,我们这里先将该表进行自连接(不加条件)。...end | 06:00 | +------+-------+-------+------+-------+-------+ 36 rows in set (0.00 sec) 这里得到了该表进行自连接的笛卡尔积...这就是自连接的一个应用,你 GET 到了吗?

    73520

    sql连接查询和嵌套查询_sql子查询和连接查询

    、自连接…....【例一】:查询科目所属的年级(科目名称、年级名称) sql 语句: 结果: 图片 =================================== 【例二】:查询 JAVA第一学年 课程成绩排名前十的学生...并且分数要大于80 的学生信息(学号、姓名、课程名称、分数) sql 语句: 结果: =================================== 【例三】:查询数据库结构-1 的所有考试结果...(学号、科目编号、成绩),降序排列 方式一: 连接查询 方式二: 子查询 结果: =================================== 自连接:查询父子信息,把一张表看成两张一样的表...现在有一张包含子父关系的,名为 category 的数据表: 我们把这一张表拆分成两张表: 执行 sql 语句: 结果: 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

    4.4K10

    sql的子连接查询

    本文链接:https://blog.csdn.net/luo4105/article/details/51397825 一直没有注重于sql这一块,现在的项目有大量的统计,报表,以前都是多表连接或者用...mybatis的延迟加载之类的,这几天心血来潮自己查了一下,发现了sql子查询这个好东西,感觉方便多了,速度也快多了(自我感觉)。...sql的子查询是可以在把数据查出来后在查出一条其他表的关联数据的一项(多项或者多条都会报错), 比如我们要查询用户表(user)并加上一个列(rolename)表示它代表的权限的名字,那么我们可以这么写...span style="font-family: Arial, Helvetica, sans-serif;">) as a from user 甚至我们还可以添加一些常量进去(对于sql...roleId=user.roleId) as rolename,'2016-05-13' as nowTime from user 这sql这几天真的写的蛮开心,哈哈

    3.3K20

    算法工程师-SQL进阶:神奇的自连接与子查询

    自连接与子查询是SQL中非常重要的两项技术,自连接是针对相同的表的联结方法,是SQL语言面向集合编程思想的集中体现,而子查询有很多变式,关联子查询技术是在实际中进行行与行之间的比较时非常重要的方法,特别是与自连接相结合的自关联子查询...举个例子:使用自连接的方法,重写上面关联子查询的SQL,即求出每班大于该班平均分的学生。...一般来说,关联子查询和自连接是可以等价替换的,即能用自连接写的SQL,也能用关联子查询写出来。在后面的实战篇会有很多这样的例子。...解析:这段SQL同时使用了自连接和关联子查询,子查询用于筛选距离now_year最近的年份,并将其用于自连接的连接条件,非常巧妙。...使用关联子查询的SQL,往往也可以使用自连接的方式。 关联子查询的代码的可读性不好,而且性能也不好,特别是在 SELECT 子句里使用标量子查询时,性能可能会变差。

    3.5K10

    ⑧【MySQL】数据库查询:内连接、外连接、自连接、子查询、多表查询

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 内连接、外连接、自连接...表1 [INNER] JOIN 表2 ON 连接条件...; == 内连接查询的是两张表交集的部分 == -- 演示: -- 查询员工姓名,以及关联的部门名称(隐式内连接) -- 表:员工表emp、...—— LEFT OUTER JOIN 连接查询 —— 左外连接: 外连接 —— 左外连接: ①查询表1所有数据,包含表1和表2交集部分的数据。...`id`; 自连接 —— JOIN 连接查询 —— 自连接: 自连接: ①自连接查询,可以是内连接查询,也可以是外连接查询 SELECT 字段列表 FROM 表1 别名A JOIN 表1 别名B ON...`age` > 50; 子查询(嵌套查询) 子查询: 子查询:SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。

    58880

    Mysql自连接查询「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 自连接查询 假想以下场景:某一电商网站想要对站内产品做层级分类,一个类别下面有若干子类,子类下面也会有别的子类。...我们可以在数据库中创建两个字段来存储id和类别名称,使用第三个字段存储类别的子类或者父类的id,最后通过自连接去查询想要的结果。...自连接查询其实等同于连接查询,需要两张表,只不过它的左表(父表)和右表(子表)都是自己。做自连接查询的时候,是自己和自己连接,分别给父表和子表取两个不同的别名,然后附上连接条件。...查询所有分类以及分类的父类:假想有左右两张表(都是tdb_cates),左表是子表,右表是父表;查询子表的id,子表的cate_name,父表的cate_name;连接条件是子表的parent_id等于父表的...查询所有分类以及分类的子类:还是假想有左右两张表(都是tdb_cates),左表是子表,右表是父表;查询子表的id,子表的cate_name,父表的cate_name;连接条件是子表的id等于父表的parent_id

    1.5K20

    Mysql中的关联查询(内连接,外连接,自连接)

    在使用数据库查询语句时,单表的查询有时候不能满足项目的业务需求,在项目开发过程中,有很多需求都是要涉及到多表的连接查询,总结一下mysql中的多表关联查询 一,内连接查询 是指所有查询出的结果都是能够在连接的表中有对应记录的...(这里只是举例,可能与实际不符,但主要在于逻辑关系),而赵七没有对应的部门,现在想要查询出员工姓名以及其对应的部门名称: 此时,就要使用内连接查询,关键字(inner join) 在这里说一下关联查询sql...t_dept d ON e.dept = d.id; 查询的结果如下: 其中,没有部门的人员和部门没有员工的部门都没有被查询出来,这就是内连接的特点,只查询在连接的表中能够有对应的记录,其中...: 如果在oracle中,直接就使用full outer join关键字连接两表就行了 五,自连接查询 自连接查询就是当前表与自身的连接查询,关键点在于虚拟化出一张表给一个别名 例如:查询员工以及他的上司的名称...所以,自连接查询一般用作表中的某个字段的值是引用另一个字段的值,比如权限表中,父权限也属于权限。

    3.9K40

    SQL进阶-2-自连接

    SQL进阶-2-自连接 SQL通常在不同的表之间进行连接运算,但是也可以在相同的表中进行运算。macOS中连接数据库: mysql -u root -p -- 后续输入密码 ?...2个名字不等 笔记:在SQL中即便是相同的表,只要是被赋予了不同的名称,都应该被当做不同的表来使用,它们只是碰巧存储了相同数据的两个集合 表的自连接和不同表间的连接没有任何区别 扩展 想要获取3...-- 假设数据中存在自增id and P1.name = P2.name 案例3-局部不一致的列 需求 在同一张表中,可能存在不是很合理的地方:比如,前田夫妇的地址应该是相同的,但是表中 不同 ?...SQL实现 查找是同一家人,但是住址不同的记录 自连接和非等值连接的结合 select distinct A1.name, A1.address from Address A1, Address A2...如果查询语句中没有distinct,结果中会出现重复值 ? 非等值连接 使用、等进行连接的称之为“非等值连接”。

    1.2K30

    sql嵌套查询和连接查询_sql子查询嵌套规则

    连接查询 通过连接运算符可以实现多个表查询,连接可以在SELECT语句的WHERE子句中建立 对Sales数据库输出所有员工的销售单,要求给出员工编号,姓名,商品编号,商品名和销售数量。...连接也可以在FROM子句中建立,而且在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。所以,在Transact-SQL中推荐使用这种方法。...指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表的链接又称为自连接。...交叉连接没有WHERE子句,他返回外连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。...子句,他返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。

    4K30

    SQL service基础(四)连接查询、自身连接查询、外连接查询和复合条件连接查询

    该题是通过连接谓词“=”完成两表的等值连接,请将此题改成用JOIN为关键字的内连接,将相应的SQL语句描述,from子句可参考以下格式: 2.完成查询每门课程的课程号、任课老师姓名及其选课人数,请回答以下问题...:  请将查询到的信息截图 ① 此题哪几个表进行连接,连接的条件分别是什么?...: ① 请将查询到的信息截图 请将此题改成用JOIN为关键字的内连接,将相应的SQL语句描述。...前面用相应的内连接SQL语句(如下)完成了查询选课学生的相关信息,得到如下图所示的信息。可以用这种方法得到此题要求的信息吗?为什么?  ...回答以下问题(请贴出以下问题的sql语句) ① 查询不同课程成绩相同的学生的学号、课程号、学生成绩(自身连接) select a.* from sc a ,sc b where a.score=b.score

    2.3K10

    SQL查询左连接、右连接、内连接

    大家好,又见面了,我是你们的朋友全栈君。 1、左连接的定义:是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。...下边以A表和B表为例子,A、B之间的左连接条件为:ano=bno;查询语句为:SELECT * FROM `A` LEFT JOIN B ON ano=bno; eg1:A表中的只有1条记录,B表中2...条记录,B表的2条记录bno都等于ano, 查询结果:将A表的记录都查询出来,B表中bno等于ano的都查询出来了且左侧为ano对应的信息。...eg2:A表中存在的ano,B表中不存在对应的bno; 结果:A表的记录全部查询出来而且如果B没有bno=ano的记录时右侧显示为空,B表中只有bno=ano的记录查询出来了。...2、右连接的定义,是以右表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将右表所有的查询信息列出,而左表只列出ON后条件与右表满足的部分。右连接全称为右外连接,是外连接的一种。

    7.6K20

    sql sever分组查询和连接查询

    ,要么就使用分组进行查询) having 条件    分组筛选(一般和group by连用,位置在其后) where:用来筛选from子句指定的操作所产生的行 group by:用来分组where子句输出...having:用来从分组的结果中筛选行 1.分组查询是针对表中不同的组分类统计和输出的 2.having子句能够在分组的基础上,再次进行筛选 3.在SQL语句中使用次序,where-->group by...-->having 解剖: 1.select  查询什么 2.from  从哪里查询 3.where  列名条件(模糊查询,关系表达式查询) 4.grop by  分组查询 5.haing  分组后的聚合函数筛选...~~~~~~~~~~~★房上的猫★~~~~~~~~~~ 表连接 select 列 from 表1,表2 where 条件(表1.主键列=表2.外键列) 内连接(inner join) select...列 from 表1 inner join 表2 on 条件(表1.主键列=表2.外键列) as也可以为表赋别名 外连接(两外连接主表位置相反)      左外连接(left join) select 列

    2.2K50
    领券