首页
学习
活动
专区
圈层
工具
发布

Mysql常用sql语句(16)- inner join 内连接

测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 利用条件表达式来消除交叉连接(cross join...)的多余数据行 inner join通过 来设置条件表达式,如果没有加on的话,inner join和cross join是相同的 on 和 inner join ... on 其实效果也是一样的...(但在标准sql中,cross join是不支持on的,只是Mysql支持) crossjoin ... on inner join 的语法格式 SELECT FROM INNER...JOIN [ON子句] inner join 可以连接 ≥ 两个的表 inner join 也可以使用 where 来指定连接条件,但是 是官方标准写法,而且 where 可能会影响查询性能...innerjoin ... on inner join 也可以只写 join 不加 inner 先看看dept、emp表有什么数据 dept表 ?

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

    图解 SQL join 语句内联合(inner join)全外联合(full outer join)左外联合(left outer join)笛卡尔积 (交叉联合(cross join))

    内联合(inner join) 只生成同时匹配表A和表B的记录集。(如下图) ?...inner join SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name id name id...如果有一边没有匹配的,缺失的这一边为null。(如下图) ?...null null 3 Ninja 4 Ninja 4 Spaghetti null null 为了生成只在表A里而不在表B里的记录集,我们用同样的左外联合,然后用where语句排除我们不想要的记录...---- 2 Monkey null null 4 Spaghetti null null 为了生成对于表A和表B唯一的记录集,我们用同样的全外联合,然后用where语句排除两边都不想要的记录

    2.6K20

    【SQL实用技巧】update,inner join与select语句的联合使用

    在实际操作数据库的时候,经常使用将update和select结合使用,例如使用select统计数据,然后update到对应的表,按照常规的实现方式,先select出来对应的数据,然后再执行update语句...如果按照常规的实现,就会先用select语句从table2中统计好数值,然后再写一个update语句更新到table1中,更新语句还得循环。...这个过程还有很多问题,例如如果更新语句中,有些成功,有些失败,这时怎么处理,这是比较难搞的问题。 可以如下实现: ​执行完成之后,table1中的total字段的值就会被改成2和4。...其实就是update可以和inner join联合使用,这样就可以使用另一个表的数据更新到当前的表。 这个很实用,只是以前一直没有注意。

    6.1K10

    SQL语句规范参考

    执行SQL时一次应只执行一条,如果多条语句则应分开执行,但必须保持在一个事务中。不得一次执行通过分号等分开的多条语句,这样处理不清晰。 10. 如果能采用or代替,则不宜使用in 语句。...in语句中的元素不得超过500个,如果超过,则应拆分为多条SQL语句。严禁使用xx in(‘’,’’….) or xx in(‘’,’’,’’)。...11. or连接条件不得超过 500,超过时应拆分为多条语句。 性能优化 1. 查询时应尽量减少多余数据的读取,通过使用where子句来减少返回的记录数。 2....应该用如下语句代替:select name from customer inner join order on customer.customerId = order.customerId where...6. join 与on 必须严格匹配,严禁出现没有on的join。 7. join…on 后面不宜使用or,如果使用则需将or的范围用( )括起来。 8. 不得使用select into 的格式。

    2K20

    大数据ClickHouse进阶(十):ClickHouse的Array Join子句

    ​ClickHouse的Array Join子句Array join 子句允许在数据表的内部,与数组类型的字段进行join操作,从而将一行数组展开为多行。...针对以上表数组字段一条膨胀成多条数据,类似Hive中的explode函数,在ClickHouse中没有explode函数,可以使用array join 达到同样效果。...在使用Array join时,一条select语句中只能存在一个Array join(使用嵌套子查询除外),目前支持INNER和LEFT两种JOIN策略:一、INNER ARRAY JOINArray...join 默认使用的就是INNER JOIN 策略,使用如下:node1 :) SELECT id,name,age,local FROM mr_tbl ARRAY JOIN local;┌─id─┬─...子句支持LEFT连接策略,Left array join不会排除空数组,执行如下语句并查看结果。

    2.9K111

    MySQL(三):多表查询和存储程序

    # 隐式内连接: 无join 关键字 使用where指定条件 # select * from 表1,表2 where 条件; # 显示内连接: 使用 inner join 关键字 使用on...指定关联条件 select * from 表1 [inner] join 表2 on 关联条件 where 筛选条件; # where 后跟的是对结果的筛选条件 外连接 左外连接: 以join...左边的表为主,查询其所有数据,根据关联条件查询join右边的表,将满足条件的数据查询出来,如果没有满足条件的数据则填充null, 可以理解为在内连接的基础上保证左表的数据全部显示。...可以简单的说,存储过程就是一条或者多条sql语句的集合,可视为批文件,但是又不仅限于批处理. 数据库中存储程序除了存储过程还有函数,可以将函数理解为有名字的一段可执行sql语句。...图1: 简单无参存储过程 当然这里只是简单的一条语句,也可以是很多语句的复杂组合.需要注意的是: "DELIMITER // " 语句的作用是将mysql的结束符设置为//, 因为mysql默认的语句结束符号是

    1.4K40

    SQL 多表查询:数据整合与分析的强大工具

    ; 在这个例子中,users 表中的一条记录可能与 orders 表中的多条记录关联。...2.3 多对多关系(Many-to-Many) 描述:在多对多关系中,一个表中的多条记录可以与另一个表中的多条记录关联。这种关系通常通过第三方表来实现,该表包含两个表之间的外键。...外连接(OUTER JOIN):返回两个表的所有数据,并且包括左表和右表中没有匹配项的记录,右表或左表中的没有匹配项的列会显示为 NULL。...自连接(SELF JOIN):当查询表自身时,通常使用自连接。自连接需要给表起一个别名,确保连接时能够区分表的不同实例。 3.2 子查询 子查询 是指在查询语句中嵌套另一个查询语句。...SQL 语句内部的查询方式。

    2.5K20

    MySQL 快速入门(三)

    ,当作一个整体供另外一条SQL语句使用,使用了分步操作的思想 连表操作:将表拼接,之后提取需要的数据 连接表的几种常见方法: 方法 说明 inner join 内连接,拼接两个表共有的部分 left join...左连接,以左表为基准拼接,右表没有的内容用NULL填充 right join 右连接,以右表为基准拼接,左表没有的内容用NULL填充 union 全连接,拼接左右表的所有数据,不同的,没有的内容用NULL...JOIN emp ON dep.id=emp.dep_id where emp.name='hammer'; 拼接详细示例 inner join:内连接 select * from emp inner...create view 视图名 as 虚拟表的查询sql语句 # 示例 select * from teacher inner join course on teacher.tid = course.cid...开启一个事务可以包含多条sql语句,要么同时成功,要不同时失败(连坐),称之为事务的原子性 事务的作用?

    1.1K30

    2-SQL语言中的函数

    【OUTER】) 全外(FULL 【OUTER】) 交叉连接(CROSS) */ # 内连接 /* SELECT 查询列表 FROM 表1 别名 INNER JOIN 表2 别名 ON 连接条件...FROM employees e INNER JOIN departments d ON e....,单查询的信息一致 特点: 要求多条查询语句的查询列数是一致的 要求多条查询语句每一列的类型和顺序最好是一致的 UNION关键字会自动去重,如果不想去重可以使用UNION ALL关键字 # 联合查询.../* union查询:将多条查询语句的结果合并成一个结果 语法: 查询语句 union 查询语句 ......应用场景:要查询结果来自多个表,且多个表没有直接的连接关系,单查询的信息一致 特点: 要求多条查询语句的查询列数是一致的 要求多条查询语句每一列的类型和顺序最好是一致的 UNION关键字会自动去重,如果不想去重可以使用

    4.3K10

    MYSQL基本操作-select 查询语句【续】

    多表查询 多表查询的区别 cross join:交叉连接 inner join:内连接 left join:左外连接 right join:右外连接 union、union...关键字连接—使用inner join SELECT FROM INNER JOIN [ON子句] – inner join通过 on 来设置条件表达式,如果没有加on...的话,inner join和cross join是相同的 – cross join … on 和 inner join … on 其实效果也是一样的(但在标准sql中,cross join是不支持on...的,只是Mysql支持) – inner join 可以连接 ≥ 两个的表 – inner join 也可以使用 where 来指定连接条件,但是 inner join … on 是官方标准写法,而且...where 可能会影响查询性能 – inner join 也可以只写 join 不加 inner select * from readertype join reader on reader.retypeid

    2.7K40

    生产环境 MySQL 8.0 LATERAL 实战:3s 慢查询优化到 0.8s 的完整过程

    整体过程如下图所示: 一、问题 1.1 问题描述 通过监控慢查询,可以看到最近1小时内执行了 700多次查询,平均执行时间 2s,如下图所示: SQL语句如下: select overdue_amount...exe INNER JOIN ( SELECT * FROM cont_review_main m WHERE m.cont_number = exe.cont_number...逐行执行,每行都用外层的值去查 每个人报姓名,现场查电话 四、优化前后 SQL 的逻辑对比 两个 SQL 在逻辑上基本等价,但存在一个微妙的潜在差异:当 cont_review_main 中同一合约存在多条...类型 INNER JOIN LATERAL(隐式要求子查询有返回值) LEFT JOIN + WHERE 条件(实际等效为 INNER JOIN,因为 main.rn 和 main.is_important_cont_in...建议为排序添加唯一列(如主键)作为 tie-breaker 以保证确定性。

    27110
    领券