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

分享10个高级sql写法

画个图展示主查询所有记录与子查询交互如下: 图片 第一条记录与子查询比较时,全部返回 false,所以第一行不展示。...第二行记录与子查询比较时,发现 销售部门 与 dept 表第二行 销售部 对应不上,返回 true,所以主查询该行记录会返回。 第二行以后记录执行结果同第一条。...七、ORDER BY 空值 NULL 排序 ORDER BY 字句中可以跟我们要排序的字段名称,但是当字段中存在 null 值时,会对我们的排序结果造成影响。...我们可以通过 ORDER BY IF(ISNULL(title), 1, 0) 语法将 null 值转换成0或1,来达到将 null 值放到前面还是后面进行排序的效果。...如果一整句查询中多个子查询都需要使用同一个子查询的结果,那么就可以用with as,将共用的子查询提取出来,加个别名。后面查询语句可以直接用,对于大量复杂的SQL语句起到了很好的优化作用。

1.3K41

MySQL数据库学习之两情相悦

.and...'): 模糊匹配查询('like'):'%'代表任意字符,'_'代表任意一个字符 正则表达式查询('regexp'): 6. group by 分组查询 分组后如果查询非分组字段默认显示组内的第一条数据...(无意义)修改sql模式(set global sql_mode='ONLY_FULL_GROUP_BY';)之后,坚持查询非分组字段会报错分组之后默认只能查找到分组字段的数据,也可以使用聚合函数得到其他字段的数据...():查看组内的数据 7. having过滤条件 having在group by之后进行过滤分组后的条件having只能对分组字段进行过滤,无法对非分组字段过滤对非分组条件进行过滤,需要使用聚合函数 8...、右外连接和全外连接 右外连接(right join):优先显示右表的数据,左表不存在的使用NULL填充左外连接(left join):优先显示左表的数据,右表不存在的使用NULL填充 MySQL默认不支持全外连接...,可以使用union关键字进行关联 union all:连接左表和右表的记录,不会去重,会显示所有数据,没有数据的使用NULL填充union:连接左表和右表的记录,然后进行去重 子查询:把一个查询语句的结果当作另外一个查询语句的条件

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

    MyBatis-Plus(实用篇)

    单个get,集合list getOne方法,多个抛出异常,第二个参数throwEx设置为false则获取第一条数据 查询记录数:count 分页查询:page 集合查询:list listObjs方法,.../** * ServiceImpl实现了IService,提供了IService中基础功能的实现 * 若ServiceImpl无法满足业务需求,则可以使用自定的UserService定义方法...,并在实现类中实现 */ @Service public class UserServiceImpl extends ServiceImpl implements...,之后查询不到此条被删除的数据 逻辑删除:假删除,将对应数据中代表是否被删除字段的状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录 实现逻辑删除 数据库中创建逻辑删除状态列,设置默认值为...,简称 AR),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录 ActiveRecord 一直广受解释型动态语言( PHP 、 Ruby 等)的喜爱

    36010

    Oracle连接查询,彻底搞懂外连接(左外连接&右外连接)

    ⑴先看标准SQL语句连接方式 【左外连接】在内连接基础上,将连接操作符左侧表不符合连接条件的记录加入结果集中,右侧表则用null填充。...全外连接只有标准SQL语句的连接方式表示。 分析:将满足条件的记录选出,再将一侧emp表中不满足连接条件的记录加入结果集,最后将另一侧dept表中不满足连接条件的记录加入结果集。...在内连接操作方式下,遇到符合连接条件的记录加入结果集,遇到A中不符合条件的记录也加入(因为它是标准),但对应B表的记录用null填充; 【A right join B】right join即把右边表B当作基准...在内连接操作方式下,遇到符合连接条件的记录加入结果集,遇到B中不符合条件的记录也加入(因为它是标准),但对应A表的记录用null填充; oracle扩展连接方式:连接条件哪边表的列用(+),则它的记录用...null值填充(也可把null当作占位符一样,没有东西空占着位置),另一边的表就是会把不符合连接条件的记录也加进查询结果中。

    4.7K10

    【MySQL】01_运算符、函数

    运算符 运算符是保留字或主要用于 SQL 语句的 WHERE 子句 中的字符,用于执行操作,例如:比较和算术运算。 这些运算符用于指定 SQL 语句中的条件,并用作语句中多个条件的连词。...在数学运算中,0不能用作除数,在MySQL中,一个数除以0为NULL。...MySQL中使用 LIMIT 实现分页 格式:LIMIT [位置偏移量] 行数 第一个“位置偏移量”参数指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移 量”,将会从表中的第一条记录开始...(第一条记录的位置偏移量是0,第二条记录的位置偏移量是 1,以此类推);第二个参数“行数”指示返回的记录条数。...不要使用 count(列名)来替代 count() , count() 是 SQL92 定义的标准统计行数的语法,跟数 据库无关,跟 NULL 和非 NULL 无关。

    2.5K30

    推荐学Java——数据表高级操作

    以上表中的数据大家可以自己修改和填充 工具和sql文件在公众号 推荐学java 回复navicat获取。...RPAD(字符串,填充后字符串总长度,要填充的字符串):在字符串的右侧填充给定字符串。 TRIM():去掉字符串的首位空格 ROUND(列名,保留位数) :四舍五入,根据指定位数来保留小数位。...一条SQL中可以同时出现内连接和外连接,混合使用没有问题。...索引实现原理 在任何数据库中,主键都会自动添加索引 在MySQL中,如果一个字段有 unique 约束的话,也会自动添加索引 在任何数据库中,任意一条记录在硬盘上都有对应的物理存储编号 不同的存储引擎索引以不同的形式存在...创建索引 语法: create index 索引名 on 表名(字段名); 删除索引 语法: drop index 索引名 on 表名; 查看 SQL 语句是否使用了索引 语法: explain sql

    1K10

    提交单引号

    id=1 手工判断SQL注入点 提交单引号 使用and和or判断 我们也可以在参数后面加上 and 1=1 来判断是否存在注入点 和 and 1=0 对比一下看看有啥不同 经过上面的对比,我们可以看到...第一种:我们让第一个查询的结果始终为假 上图可看到,什么都没有显示,因为填充时使用的null,所以返回的就是空null....如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目,初始记录行的偏移量是 0(而不是 1)。...例如: SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 在地址偶棉加入以下代码看看: 上图结果返回也是空,因为这使用的null,所以返回的还是null。...id=2 union select null,schema_name,null from information_schema.schemata limit 0,1 上图,并没有显示数据库名而显示的是第一条语句查询出来的结果

    1.7K20

    Excel实战技巧63: 制作具有数据导航功能的用户窗体

    这个用户窗体中的控件及相应的名称如下: 用户窗体名称:ufEmployee 用户窗体标题:员工记录 在用户窗体中,从上至下,从左至右,创建下面的控件: 员工ID文本框名称:tbxEEID Tag:Field0...需要使用事件代码将记录集的当前记录显示在文本框中、以及阻止用户错误操作,例如当处于第一条记录时单击命令按钮cmdPrev(使用记录集中当前记录的数据填充文本框。...上面的程序代码遍历用户窗体中所有的控件,如果控件具有像Field0、Field1、Field2等形式的标签(tag),就从记录集中获取与标签相同名称字段的数据来填充相应的文本框。...你只需确保使用了正确的Tag属性,以免禁用了你不想禁用的控件。 现在,创建记录集,确保使用有用的信息来填充文本框。 无论用户窗体在什么时候打开都会触发Initialize事件,此时适合创建记录集。

    3.1K20

    VB.NET数据库编程基础教程

    1.绑定前的准备工作 (1)创建一个名为db1的Access数据库,数据表Student的结构如 图所示: 并在表中增加以下几条记录。如 图所示。...加载窗体时,请使用窗体的Load事件过程,在数据网格控件中填充数据。...仔细观察一下运行结果我们就会发现,程序在实现时自动用数据集中的第一条记录来填充各件控件。 (三)用代码实现数据绑定 上面我们着重探讨了控件与数集据绑定的向导模式。...:myBind.Position=myBind.count – 1 翻阅到第一条记录:myBind.Position = 0 2.删除数据记录 双击“删除记录”按钮,在代码窗中输入以下代码...并在第7行代码中将查询结果建立一个新的OleDbCommand对象,用来指定要删除的记录。第8行代码是从数据库中删除指定的记录,第9行代码是从myDataSet中删除记录。

    4.7K30

    MySql操作-20211222

    SELECT 数据查询 基础 显示如何使用简单的`select`语句查询单个表中的数据   使用`SELECT`语句从表或视图获取数据。   表由行和列组成,如电子表格。...>LIKE 匹配基于模式匹配的值。 >IN 指定值是否匹配列表中的任何值。 >IS NULL 检查该值是否为NULL。...语法 - `LIMIT 初始位置,记录数` - 初始位置”表示从哪条记录开始显示;第一条记录的位置是 0,第二条记录的位置是 1。后面的记录依次类推。 - “记录数”表示显示记录的条数。...- *LIMIT 后的两个参数必须都是正整数。* ex:tb_students_info 表中,使用 LIMIT 子句返回从第 4 条记录开始的行数为 5 的记录,SQL 语句和运行结果如下。...3 是从第四行开始 5 是返回的行数 ``` 不指定初始位置 记录从第一条记录开始显示。

    2.2K10

    不重用的undo日志 (2)—mysql进阶(六十五)

    Trx_undo_page_start:表示在当前页面从什么位置开始存储undo日志的,或者说表示第一条undo日志在页面中起始偏移量。...UNDO页面链表 单个事务中的undo页面链表 一个事务可能包含多个sql语句,而一个sql语句可能对多条记录进行改动,而每条记录的改动,都可能会记录1条或者2条undo日志,所以在一个事务里会产生很多...在每组写入undo日志时,都会记录一些这个组的属性,存储这些属性的地方称为undo log header。...(先提交小的后提交大的) Trx_undo_del_marks:标记本组undo日志中是否包含delete mark操作的undo日志。...Tra_undo_log_start:本组undo日志中第一条undo日志在页面中的偏移量。 Trx_undo_xid_exists:本组undo日志是否包含xid。

    34410

    SpringBoot整合MyBatis-Plus实现分页,代码生成,锁等实例

    Mybatis-Plus是一款专门针对于传统MyBatis开发中sql需要手动进行映射配置繁琐缺点的一款框架技术,这款框架技术提供了十分丰富的api供开发者们使用,在 MyBatis 的基础上只做增强不做改变...(1)简介   添加、修改数据时,每次都会使用相同的方式进行填充。...(2)未使用自动填充时   未使用 自动填充时,每次添加、修改数据都可以手动对其进行添加。...物理删除指的是直接将数据从数据库中删除,不保留。   逻辑删除指的是修改数据的某个字段,使其表示为已删除状态,而非删除数据,保留该数据在数据库中,但是查询时不显示该数据(查询时过滤掉该数据)。   ...可以定义一个自动填充规则,初始值为 0。0 表示未删除, 1 表示删除。

    1.7K20

    MySQL 不相关子查询怎么执行?

    关于创建临时表的更多内容,后面有一小节单独介绍。 执行阶段,server 层从存储引擎读取到主查询的第一条记录之后,就要判断记录是否匹配 where 条件。...server 层从存储引擎读取主查询的第 2 ~ N 条记录,判断记录是否匹配 where 条件时,就可以直接用 sub_field 字段值去临时表中查询是否有相应的记录,以判断 sub_field 字段条件是否成立...使用临时表存放子查询的结果,是为了提升整个 SQL 的执行效率。如果临时表中的记录数量很多,根据主查询字段值去临时表中查找记录的成本就会比较高。...由上所述,总结一下 MySQL 的优化逻辑: 对于包含子查询的 where 条件字段,如果连续几条记录的字段值都相同,这组记录中,只有第一条记录会根据 where 条件字段值去临时表中查找是否有对应记录...,这一组的剩余记录直接复用第一条记录的判断结果。

    2K10

    SQL命令 DECLARE

    描述 DECLARE语句声明在基于游标的嵌入式SQL中使用的游标。声明游标后,可以发出OPEN语句来打开游标,然后发出一系列FETCH语句来检索各个记录。...提取操作从查询结果集中的第一条记录开始,并按顺序遍历结果集记录。一次提取只能提取一次记录。下一次提取将获取结果集中的下一条连续记录。...游标名称的第二个和后续字符必须是字母或数字。与SQL标识符不同,游标名称中不允许使用标点符号。 可以使用分隔符字符(双引号)将SQL保留字指定为游标名称。...通过游标更新 可以使用带有WHERE CURRENT OF子句的UPDATE或DELETE语句,通过声明的游标执行记录更新和删除。...这些子句是可选的,不执行任何操作。它们是作为在代码中记录发出查询的进程是否具有所需的更新和删除对象权限的一种方式提供的。

    2.7K21

    开源交流丨批流一体数据集成工具 ChunJun 同步 Hive 事务表原理详解及实战分享

    transactional 必须为 true 外部表不能成为 ACID 表,不允许从非 ACID 会话读取 / 写入 ACID 表 以下矩阵包括可以使用 Hive 创建的表的类型、是否支持 ACID...属性、所需的存储格式以及关键的 SQL 操作。...rowId 是一个自增的唯一 ID,在写事务和分桶的组合中唯一; currentTransaction 当前的写事务 ID; row 具体数据。对于 DELETE 语句,则为 null。...-2 获取第一条记录; 如果当前记录的 row_id 和上条数据一样,则跳过; 如果当前记录的操作类型为 DELETE,也跳过; 通过以上两条规则,对于 1-0-1-2 和 1-0-1-1,这条记录会被跳过...合并过程是流式的,即 Hive 会将所有文件打开,预读第一条记录,并将 row_id 信息存入到 ReaderKey 类型中。

    55320

    MongoDB核心概念与基本操作

    1.2 集合 ​   集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表的概念。   ...1.3 文档   文档集合中一条条记录,是一组键值(key-value)对(即 BSON)。...update : update的对象和一些更新的操作符(如 , inc…)等,也可以理解为sql update查询内set后面的 upsert : 可选,这个参数的意思是,如果不存在update的记录,...multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 writeConcern :可选,抛出异常的级别。...- db.集合名称.update({"name":"xiaohei"},{$set:{name:"mingming"}}) `保留原来数据更新,但是只更新符合条件的第一条数据` - db.集合名称.update

    1.5K60

    神奇的 SQL 之扑朔迷离 → ON 和 WHERE,好多细节!

    一定是与 join 一并使用的,join 会添加外部行,并将外部行中被驱动表的字段填充 null ,而 where 进行过滤的时候,只有逻辑判断为 true 的记录才会保留,逻辑值为 false 和...unknown 的记录都会过滤掉(更多详情:神奇的 SQL 之温柔的陷阱 → 三值逻辑 与 NULL !)...我们可以看到:     语句 query_on 返回了 tbl_a 中的全部记录,tbl_b 无对应记录的字段值填成 NULL,这是因为 join 会添加外部行,将 tbl_a 有而 tbl_b 中没有的记录添加到结果集...  ON 后的关联条件与 WHERE 后的过滤条件,这两者的执行顺序是否如 SQL 执行顺序图中说的那样,ON 一定先与 WHERE ?   ...就步骤 1 与 示例 1 中的步骤 1 不同,其余 2 步是一样的     此时 WHERE 后的过滤条件的生效时机也是早于 ON 后的关联条件的   3、左表无二级索引,右表有二级索引     将 tbl_b

    92320
    领券