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

MySQL多表联合查询

1.2 交叉连接(CROSS JOIN) 1.2.1 笛卡尔笛卡尔积(Cartesian product)是指两个集合X和Y乘积 例如,有A和B两个集合,它们值如下: A = {1,2}...), (4,1), (4,2), (5,1), (5,2) }; 以上A×B 和 B×A 结果就叫做两个集合笛卡尔积 并且,以上结果我们可以看出: 两个集合相乘,不满足交换率,即 A×B≠B×A。...1.2.2 交叉连接 交叉连接(CROSS JOIN)分为显式和隐式两种,一般用来返回连接笛卡尔积。...注意 当连接表之间没有关系时,会省略掉 WHERE 子句,这时返回结果就是两个笛卡尔积,返回结果数量就是两个数据行相乘,数据量巨大。...交叉连接可以查询两个两个以上表,为了更好理解,使用两个连接查询。

10.5K50

基本 SQL 之增删改查(二)

连接查询主要分为三种,交叉连接、内连接和外连接,我们一个个说。 1、交叉连接 交叉连接其实连接查询第一个阶段,它简单表现为两张表笛卡尔积形式,具体例子: ?...如果你没学过数学中笛卡尔积概念,你可以这样简单理解这里交叉连接: 两张表交叉连接就是一个连接合并过程,T1 表中每一行会分别与 T2 表每一行做一个组合连接单独生成一行。...交叉连接使用关键字 CROSS JOIN 进行连接,例如: select * from table1 cross join table2 也可以按照 ANSI SQL:1989 规范中指定,使用逗号进行交叉连接...,我们就需要连接两个表,而我们交叉连接会为我们产生太多冗余数据行,我们可以使用 where 子句对笛卡尔积后结果集进行一个条件筛选。...3、外连接 我们说内连接主要是两个步骤结合,笛卡尔积加 ON 筛选器,一般情况下也是内连接使用最为频繁。

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

工作总结之因为笛卡尔积问题写SQL搞了半天(附笛卡尔积总结)

比如简单两个连接学生表(Student)和班级(Class)表,如图: 进行连接后如图: 笛卡尔笛卡尔积在SQL中实现方式既是交叉连接(Cross Join)。...所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数里一个概念,表示两个表中每一行数据任意组合,上图中两个连接即为笛卡尔积(交叉连接) 在实际应用中,笛卡尔积本身大多没有什么实际用处,只有在两个连接时加上限制条件...,才会有实际意义,下面看内连接连接 如果分步骤理解的话,内连接可以看做先对两个进行交叉连接后,再通过加上限制条件(SQL中通过关键字on)剔除不符合条件子集,得到结果就是内连接了.上面的图中...当然,限制条件所涉及两个数据类型必须匹配....我看到百度百科上说自连接是一种特殊连接,但这是错误,因为两个相同表之间不光可以内连接,还可以外连接交叉连接…在进行连接时,必须为其中至少一个表指定别名以对这两个进行区分!

1.4K10

SQL必知必会:SQL 中连接

交叉连接 交叉连接 SQL99 采用是 CROSS JOIN,常听听说笛卡尔乘积其实是 SQL92 中,而交叉连接实际上就是 SQL92 中笛卡尔乘积,也就是说 交叉连接 == 笛卡尔乘积。...笛卡尔乘积是一个数学运算。假设我有两个集合 X 和 Y,那么 X 和 Y 笛卡尔积就是 X 和 Y 所有可能组合,也就是第一个对象来自于 X,第二个对象来自于 Y 所有可能。...,而是根据两个表之间列名相同自动进行连接,可自动查询两张连接表中所有相同字段,然后进行等值连接。...需要注意是,自然连接只适用于两个表具有相同列名情况。如果有多个相同列名,自然连接会自动进行多个之间匹配,因此可能会出现一些意想不到结果。...左外连接,就是指左边表是主表,需要显示左边表全部行,而右侧表是表。

23520

MySQL DQL 连接查询

1.什么是连接查询? 在关系型数据库管理系统(RDBMS)中,连接查询是一项重要数据库操作,它允许我们多个表中检索和组合数据,以便进行更复杂查询和分析。...) 不管是哪种连接,本质上都是在总笛卡尔积下进行筛选过滤。...如果没有连接条件,则结果为交叉连接结果。 交叉连接 交叉连接写作 CROSS JOIN。...但是关于确定为 SELECT * 显示哪些,这两个联接在语义上并不相同。 USING 连接选择相应列合并值,而 ON 连接选择所有表中所有。...外连接是求两个集合并集。笛卡尔角度讲就是笛卡尔积中挑出 ON 子句条件成立记录,然后加上左表中剩余记录,最后加上右表中剩余记录。

5600

MySQL 连接查询

1.什么是连接查询 在关系型数据库管理系统(RDBMS)中,连接查询是一项重要数据库操作,它允许我们多个表中检索和组合数据,以便进行更复杂查询和分析。...) 不管是哪种连接,本质上都是在总笛卡尔积下进行筛选过滤。...SELECT columns FROM table1 CROSS JOIN table2; 因为交叉连接无法使用维恩图进行描述,所以这里不用维恩图(Venn Diagram)表示 CROSS JOIN...但是关于确定为 SELECT * 显示哪些,这两个联接在语义上并不相同。 USING 连接选择相应列合并值,而 ON 连接选择所有表中所有。...外连接是求两个集合并集。笛卡尔角度讲就是笛卡尔积中挑出 ON 子句条件成立记录,然后加上左表中剩余记录,最后加上右表中剩余记录。

26820

多表操作之列关联(一)

多表操作之列关联分类 上文介绍了相对简单《多表操作之行关联》,本文则分享一小部分有关多表操作关联知识。其较于前者,明显更为复杂,其主要关键词为 JOIN,这也是在查询中非常常见一种操作!...根据连接查询返回结果,分为三类 内连接(inner join) 外连接(outer join) 交叉连接(cross join) 多表关联原理-笛卡尔积 有的人活着,他已经死了!...定义:笛卡尔乘积是指在数学中,两个集合X和Y笛卡尔积(Cartesian product),又称直积,表示为X×Y,第一个对象是X成员而第二个对象是Y所有可能有序对其中一个成员 。...实际上,交叉连接就是将两个表不设定任何条件,所呈现连接结果。交叉连接通常也叫做笛卡尔积,数学上比较常用! 现在明白为什么先分享这个了吧! 因为,它,离真理最近!...SELECT*FROM dw.dim_shop,class201812.list_20191013; 交叉连接小结: 如果两个表不做任何限制,只做join,则形成笛卡尔积 生成表字段数,就是两个表关联字段数之和

75210

【mysql】多表查询

前提条件:这些一起查询表之间是有关系(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。比如:员工表和部门表,这两个表依靠“部门编号”进行关联。 1....,department_name FROM employees CROSS JOIN departments;#查询出2889条记录 1.2 笛卡尔积(或交叉连接理解 笛卡尔乘积是一个数学运算。...假设有两个集合 X 和 Y,那么 X 和 Y 笛卡尔积就是 X 和 Y 所有可能组合,也就是第一个对象来自于 X,第二个对象来自于 Y 所有可能。组合个数即为两个集合中元素个数乘积数。...[在这里插入图片描述] SQL92中,笛卡尔积也称为交叉连接,英文是 CROSS JOIN。在 SQL99 中也是使用 CROSS JOIN表示交叉连接。...它作用就是可以把任意表进行连接,即使这两张表不相关。

5K20

mysql多表查询 浅谈mysql中等值连接与非等值连接、自连接与非自连接、内连接与外连接问题(一)

1.2笛卡尔积(或交叉链接)理解 笛卡尔乘积是一个数学运算。...组合个数即为两个集合中元素 个数乘积数。 笛卡尔积也称为 交叉连接 ,英文是 CROSS JOIN。在 SQL99 中也是使用 CROSS JOIN表示交 叉连接。...说明 :对多表进行查询记录、更新记录、删除记录时,如果对操作没有限定表别名(或表 名),并且操作在多个表中存在时,就会抛异常。...内连接: 合并具有同一两个以上行, 结果集中不包含一个表与另一个表不匹配行 外连接: 两个表在连接过程中除了返回满足连接条件行以外还返回左(或右)表中不满足条件 行 ,这种连接称为左(或右...如果是右外连接,则连接条件中右边表也称为 主表 ,左边表称为 表 。 SQL92:使用(+)创建连接 在 SQL92 中采用(+)代表表所在位置。即左或右外连接中,(+) 表示哪个是表。

3K20

深入理解SQL四种连接-左外连接、右外连接、内连接、全连接

3、交叉联接    交叉联接返回左表中所有行,左表中每一行与右表中所有行组合。交叉联接也称作笛卡尔积。    ...,一般称为内连接,有INNER JOIN,形成中间表为两个表经过ON条件过滤后笛卡尔积。...自然连接无需指定连接,SQL会检查两个表中是否相同名称,且假设他们在连接条件中使用,并且在连接条件中仅包含一个连接。...第二、两表连接查询:对两表求积(笛卡尔积)并用ON条件和连接连接类型进行过滤形成中间表;然后根据WHERE条件过滤中间表记录,并根据SELECT指定返回查询结果。...理解SQL查询过程是进行SQL优化理论依据。 七、ON后面的条件(ON条件)和WHERE条件区别: ON条件:是过滤两个链接表笛卡尔积形成中间表约束条件。

5.6K10

SQL各种连接(cross join、inner join、full join)用法理解

SQL中连接可以分为内连接,外连接,以及交叉连接 。 1....交叉连接CROSS JOIN 如果不带WHERE条件子句,它将会返回被连接两个笛卡尔积,返回结果行数等于两个表行数乘积; 举例,下列A、B、C 执行结果相同,但是效率不一样: A:SELECT...内连接INNER JOIN 两边表同时符合条件组合 如果仅仅使用 SELECT * FROM table1 INNER JOIN table2 内连接如果没有指定连接条件的话,和笛卡尔交叉连接结果一样...,但是不同于笛卡尔地方是,没有笛卡尔积那么复杂要先生成行数乘积数据表,内连接效率要高于笛卡尔交叉连接。...***************关于等值连接和自然连接 等值连接(=号应用于连接条件, 不会去除重复) 自然连接(会去除重复) 数据库连接运算都是自然连接,因为不允许有重复行(元组)存在。

1.1K20

SQLServer SQL连接查询深度探险(摘录

一、交叉连接(CROSS JOIN) 交叉连接(CROSS JOIN):有两种,显式和隐式,不带ON子句,返回是两表乘积,也叫笛卡尔积。 例如:下面的语句1和语句2结果是相同。...,一般称为内连接,有INNER JOIN,形成中间表为两个表经过ON条件过滤后笛卡尔积。...自然连 接无需指定连接,SQL会检查两个表中是否相同名称,且假设他们在连接条件中使用,并且在 连接条件中仅包含一个连接。...第二、两表连接查询:对两表求积(笛卡尔积)并用ON条件和连接连接类型进行过滤形成中间表 然后根据WHERE条件过滤中间表记录,并根据SELECT指定返回查询结果。...理解SQL查询过程是进行SQL优化理论依据。 六、ON后面的条件(ON条件)和WHERE条件区别: ON条件:是过滤两个链接表笛卡尔积形成中间表约束条件。

1.1K20

Oracle数据库(三)表操作,连接查询,分页

笛卡尔积在sql中实现方式是交叉连接,所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数一个概念,表示两个表中每一行数据任意组合。...简单来说,就是两个表不加条件限制进行连接,出现数据行数是两个表数据行数乘积。...,将一个表相同或者不同数据进行比较,需要将一个表来进行当做两个进行连接,进而比较其中数据再进行查询 --自连接 select e1.ename,e2.ename from p_emp e1,...level rownum rownum是oracle系统顺序分配为查询返回编号,返回第一行分配是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回总行数, 而且rownum...需要注意是:如果按照主键排序,rownum顺序会跟着变化,如果不是按照主键排序,rownum不会变。 --查询前十数据 select e.

1.9K80

Apache Hive Join

笛卡尔积――是关系乘法,它将分别来自两个数据集合中行以所有可能方式进行组合。...首先用笛卡尔积完成对两个数据集合乘运算,然后对生成结果集合进行选取运算,确保只把分别来自两个数据集合并且具有重叠部分行合并在一起。...连接条件指定各之间(每个表至少一进行连接关系。因为正在比较连接条件中,所以它们必须具有一致数据类型。...(无限制) 连接 交叉连接用于对两个源表进行纯关系代数乘运算。...例如,如果第一个数据源中有5个行,而第二个数据源中有4个行,那么在它们之间进行交叉连接就会产生20个行。人们将这种类型结果集称为笛卡尔乘积。

1.3K10

SQL 多表联合查询几种方式

<)进行表间比较操作,查询与连接条件相匹配数据。根据所使用比较方式不同,内连接分为等值连接、自然连接和自连接三种。...关键字 INNER JOIN 等值连接/相等连接 使用”=”关系将表连接起来查询,其查询结果中列出被连接表中所有,包括其中重复列 SELECT PM_ACT_JOB_RLS.*,...join是会生成一张临时表,并返回给用户 where条件是针对最后生成这张临时表进行过滤,过滤掉不符合where条件记录 on条件是对left join右表进行条件过滤,但依然返回左表所有行,...JOIN MM_LOT_OPERATIONS AS mo ON me.LotID = mo.SerialNumber 交叉连接/笛卡尔两个表做笛卡尔积,得到结果集行数是两个行数乘积。...CROSS JOIN PM_ACT_RLS 注意:带有where条件子句,往往会先生成两个表行数乘积数据表,然后根据where条件从中选择。

73120

神奇 SQL 之团结力量 → JOIN

连接   简单来说,就是将其他表中添加过来,进行"添加"运算,如下图所示。 ?   为什么需要进行"添加"操作 了?...因为我们在设计数据库时候,往往需要满足范式(具体满足范式几,无法一概而论,这里不做细究),会导致我们某个需求全部分散在不同表中,所以为了满足需求,我们需要将某些表进行连接。...交叉连接   讲交叉连接之前了,我们先来看看笛卡尔积,假设我们两个集合,集合A={a, b},集合B={0, 1, 2},则A与B笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0...交叉连接就是对两张表中全部记录进行交叉组合,因此其结果是两张表乘积,这也是为什么交叉连接无法使用内连接或外连接中所使用 ON 子句原因。...交叉连接基本不会应用到实际业务之中,原因有两个,一是其结果没有实用价值,而是结果行数太多,需要花费大量运算时间和硬件资源。

52530

【MySQL数据库】多表关系与多表联合查询

目录 MySQL多表关系 一对一 一对多 多对多 MySQL外键约束 创建外键 数据插入 删除 多表联合查询 交叉连接查询 内连接查询 外连接查询 子查询关键字 自关联 MySQL多表关系 MySQL...-- 注意给表添加数据时,外键值不能随便写,必须依赖主表主键 删除 主表数据被表依赖时,不能删除,否则可以删除 数据可以随便删除 多表联合查询 交叉连接查询 •...交叉连接查询返回被连接两个表所有数据行笛卡尔积 • 笛卡尔积 可以理解为一张表每一行去和另外一张表任意一行进行匹配 • 假如 A 表有 m 行数据..., B 表有 n 行数据,则返回 m*n 行数据 • 笛卡尔积会产生很多冗余数据,后期其他查询可以在该集合基础上进行条件筛选 select * from 表1,表2,表3...返回数据类型 单行单列:返回是一个具体内容,可以理解为一个单值数据; 单行多:返回一行数据中多个内容; 多行单列:返回多行记录之中同一内容,相当于给出了一个操作范围; 多行多:查询返回结果是一张临时表

2.7K20

快来看看你是不是“假”DBA

FROM 连接 首先,对 SELECT 语句执行查询时,对FROM 关键字两边表执行连接,会形成笛卡尔积,这时候会产生一个虚表VT1(virtual table) 首先先来解释一下什么是笛卡尔积 现在我们有两个集合...1 什么是 内连接、外连接交叉连接笛卡尔连接方式主要有三种:外连接、内链接、交叉连接连接(OUTER JOIN):外连接分为三种,分别是左外连接(LEFT OUTER JOIN 或 LEFT...集合相乘,包含了集合 A 中元素和集合 B 中元素之和,也就是 A 元素个数 * B 元素个数 交叉连接原文是Cross join ,就是笛卡尔积在 SQL 中实现,SQL中使用关键字CROSS...JOIN来表示交叉连接,在交叉连接中,随便增加一个表字段,都会对结果造成很大影响。...: 通过 union 连接 SQL 分别单独取出数必须相同 使用 union 时,多个相等行将会被合并,由于合并比较耗时,一般不直接使用 union 进行合并,而是通常采用 union all

76150

sql server 连接查询_连表查询语句

(内连接),也成为自然连接 作用:根据两个或多个表中之间关系,从这些表中查询数据。...注意: 内连接结果中删除其他被连接表中没有匹配行所有行,所以内连接可能会丢失信息。 重点:内连接,只查匹配行。...4、CROSS JOIN(交叉连接交叉连接交叉连接返回左表中所有行,左表中每一行与右表中所有行组合。交叉连接也称作笛卡尔积。 简单查询两张表组合,这是求笛卡儿积,效率最低。...笛卡儿积:笛卡尔乘积,也叫直积。假设集合A={a,b},集合B={0,1,2},则两个集合笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。...,因为生成两个笛卡尔积,因而不能使用ON关键字,只能在WHERE子句中定义搜索条件。

3.4K10
领券