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

MySQL 子查询 嵌套查询

MySQL 子查询 嵌套查询 一、带IN关键字的子查询 二、带EXISTS关键字的查询 三、带ANY、SOME 关键字的子查询 四、带ALL 关键字的查询 自言自语 一、带IN关键字的子查询 使用IN...关键字进行子查询的时候,内层查询语句仅仅返回一个数据列。...语法格式: SELECT 查询字段 FROM 表名 WHERE 字段名 [NOT] IN (SELECT 语句); 二、带EXISTS关键字的查询 意思就是内层的select查到了(至少查到了一行)才进行查询...语法格式: SELECT 查询字段 FROM 表名 WHERE [NOT] EXISTS (SELECT 语句); 三、带ANY、SOME 关键字的子查询 ANY 、SOME 是表示满足其中任一条件,就允许创建一个表达式对子查询的返回值列表进行比较...(全满足) SELECT 查询字段 FROM 表名 WHERE 字段名 比较运算符 ALL (SELECT 语句); 自言自语 最水最水的一篇。 实操过段时间再上传吧。 划水啊。

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

    MySQL——优化嵌套查询和分页查询

    优化嵌套查询 嵌套查询(子查询)可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。嵌套查询写起来简单,也容易理解。...嵌套查询: explainselect*fromcustomerwherecustomer_idnotin(selectcustomer_idfrompayment); 连接改写: explainselect...,是因为MySQL不需要在内存中创建临时表来完成这个逻辑上需要两个步骤的查询工作;并且Not exists表示MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行, 就不再搜索了...优化分页查询 在MySQL中做分页查询,MySQL 并不是跳过 offset 行,而是取 offset+N 行,然后返回放弃前 offset 行,返回 N 行,那当 offset 特别大的时候,效率就非常的低下...总结 对于嵌套查询和分页查询的优化,归根结底就是遵循SQL优化原则之一——减少回表查询的I/O次数。对于分页查询优化,更建议使用第一种优化方案,性能更好,稳定性更高。 参考 《深入浅出MySQL》

    4.2K21

    Mysql查询语句优化

    分析查询 想要对一条查询语句进行优化,首先要对其进行分析,MySQL提供了这个机制, 可以通过explain sql 或者desc sql的语法去获取MySQL对某一条语句的执行计划(MySQL优化之后的...SQL_NO_CACHE 该提示让mysql不对这条数据的结果进行缓存.SELECT SQL_NO_CACHE xxx, yyy FROM TABLE; SQL_CALHE 告诉mysql这条语句的结果需要缓存....SELECT SQL_CALHE * FROM TABLE; HIGH_PRIORITY 告诉MySQL这条数据的优先级很高,在竞争一些互斥的资源时,这条语句将最先获得资源,SELECT HIGH_PRIORITY...STRAIGHT_JOIN 该hint告诉MySQL按照语句中的顺序进行多个表的关联操作,不要进行”优化”.select STRAIGHT_JOIN * from table1 join table2....* FROM TABLE ...; FORCE INDEX和IGNORE INDEX 这两个hint告诉MySQL此查询语句强制使用或者不使用哪个索引.SELECT * FROM TABLE FORCE

    7.3K20

    Mysql常用查询语句

    SELECT * FROM tb_stu WHERE date = ‘2011-04-08’ 注:不同数据库对日期型数据存在差异: : (1)MySQL:SELECT * from tb_name...’ 完全匹配的方法”%%”表示可以出现在任何位置 八查询前n条记录 SELECT * FROM tb_name LIMIT 0,$N; limit语句与其他语句,如order by等语句联合使用,...会使用SQL语句千变万化,使程序非常灵活 九查询后n条记录 SELECT * FROM tb_stu ORDER BY id ASC LIMIT $n 十查询从指定位置开始的n条记录 SELECT ... WHERE 查询条件 注:SQL语句中的DISTINCT必须与WHERE子句联合使用,否则输出的信息不会有变化 ,且字段不能用*代替 十六NOT与谓词进行组合条件的查询 (1)NOT BERWEEN...,SUM(price) AS title,date FROM tb_price GROUP BY pid ORDER BY title DESC 注:当分组语句group by排序语句order by

    7.5K20

    Mysql语句查询优化

    其实对Mysql查询语句进行优化是一件非常有必要的事情。 如何查看当前sql语句的执行效率呢?...`Student` (`stu_id`, `stu_name`, `stu_age`) VALUES ('5', '李晨', '35'); 3.加入查询语句 EXPLAIN SELECT * FROM...EXPLAIN显示了mysql如何使用索引来处理select语句以及连接表。也就是校验sql语句是否使用了索引,以及sql语句的查询效率。...可以为相关的域从where语句中选择一个合适的语句 key: 实际使用的索引。如果为null,则没有使用索引。很少的情况下,mysql会选择优化不足的索引。...在不损失精确性的情况下,长度越短越好 ref:显示索引的哪一列被使用了,如果可能的话,是一个常数 rows:mysql认为必须检查的用来返回请求数据的行数 extra:关于mysql如何解析查询的额外信息

    6.7K10

    mysql常用查询语句

    原因在于英语为null,在mysql里面null+其他数据=null # ifnull(参数1,参数2) 如果参数1有值,则有参数1;如果参数1位null,则走参数2; # 查询id,name,总成绩...select id,name,(chinese+ifnull(english,0)+math) from stu; -- mysql会将 字符串'123'转成数字123,再和100加,加完之后是223...`name`,s.chinese from stu s; # 5.5 函数可以加别名; select CURRENT_DATE() 当前日期; where条件查询语句 CREATE TABLE stu1...stu1 where address not in('杭州','香港','南京'); # 5.查询英语没考试的人员信息;english null,在mysql里面null不是0; -- 对于null的数据...,不能用=,也不是0 select * from stu1 where english is null; # 6.模糊查询,like,比较常用;%:表示多个字符; -- 6.1 查询所有姓马的人员信息;

    1.9K10

    MySQL 查询语句大全

    MySQL 查询语句大全 当然,以下是博客的导语、摘要和总结部分。 导语 大家好,我是猫头虎博主!欢迎来到这篇关于 MySQL 查询语句的全面指南。...摘要 本文将深入浅出地介绍 MySQL 的各种查询语句,从基础的 SELECT 语句开始,到复杂的 JOIN 操作,再到高级的子查询和存储过程。...文章还将包括排序、筛选、分组和聚合等方面的内容,帮助你全面了解和掌握 MySQL 查询。 简介 MySQL 是一个开源的关系数据库管理系统,它支持各种查询语句和操作,用于数据操纵和检索。...SELECT 语句 基础查询 最基础的查询语句如下: SELECT column1, column2 FROM table_name; 例如,从 students 表中选取 name 和 age:...的各种查询语句进行了全面的探讨。

    2.2K10

    mysql嵌套子查询的应用

    sql语句中一个查询有时未必能满足需求,应对多表联查时就需要进行嵌套查询。嵌套查询的意思是,一个查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询。其中外层查询也称为父查询,主查询。...内层查询也称子查询,从查询。 嵌套查询的工作方式是:先处理内查询,由内向外处理,外层查询利用内层查询的结果嵌套查询不仅仅可以用于父查询select语句使用。...还可以用于insert、update、delete语句或其他子查询中。 子查询的组成 包含标准选择列表组件的标准select查询 包含一个或多个表或者视图名称的标准from子句。...,因此总是True SELECT * FROM Person照常执行) 但是如果子查询中因为加了条件而没有结果集返回,则主语句就不执行了: SELECT * FROM Person WHERE exists...( SELECT * FROM Person WHERE Person_Id = 100 --如果不存在Person_Id的记录,则子查询没有结果集返回,主语句不执行 )

    5.2K20

    Mysql 模糊查询 like 语句

    mysql模糊查询like语句 like语句用于模糊查询符合条件的语句 %代表 若干个字符 _代表一个单词 查询使用like语句的语法是: select 字段名 from 表名 where 字段名...like '需要模糊查询的对象' 如果需要查询第二位字母是q的字段,那么like后面可以跟'_q%' 如果需要模糊查询的字符当中有'_',那么可以使用转义字符。...如果需要查询第二位字符是_的字段,那么like后面可以跟 '__%' 例如,我们现在有如下的一张表 +-------+--------+----------+------+------------+-...'M' 的人的姓名的时候,我们可以使用以下语句进行查询。...select ename from emp where ename like '_m%'; 使用上述语句查询的结果为 +-------+ | ename | +-------+ | SMITH | +-

    7.4K30

    MySQL(DQL数据查询语句)

    基础查询 基础语法: SELECT 查询字段列表(最后一个字段不加逗号) FROM 表名; 执行顺序:先执行 FROM 再执行SELECT 注意: 查询字段列表中:字段,函数,表达式,常量 查询结果是一张虚拟的二维表...查询常量 SELECT 1; 查询函数 SELECT VERSION(); 表达式 SELECT 100+200; SELECT 1>2;-- mysql中没有boolean类型,0代表false,1代表...true 查询单个字段 SELECT name FROM temp_user; 多字段查询 SELECT * FROM temp_user; SELECT name,sex FROM temp_user...模糊查询:LIKE,BETWEEN AND,IN 条件查询的执行顺序 1. from 2. where 3. select 条件表达式 查询年龄>18的运动员 SELECT * FROM temp_user...; SELECT * FROM temp_user WHERE NOT(age>18 AND birthday IS NOT NULL); 模糊查询 模糊查询的语法: SELECT 查询字段列表 FROM

    4.4K10

    MySQL查询进阶相关sql语句

    from students where (not age <= 18) and gender = "女"; 模糊查询 -- like -- % 替换1个或者多个 -- _ 替换1个 -- 查询姓名中以...name from students where name like "___"; -- 查询至少有2个字的名字 select name from students where name like "...= '台州市'; 子查询 在一个select语句中嵌入另一个select语句, 那么被嵌入的select语句称之为子查询语句, 而最外层的select语句称之为主查询语句 -- 标量子查询: 子查询返回的结果是一个数据...(一行一列) -- 查询大于平均年龄的学生 (先查询平均年龄) select * from students where age > (select avg(age) from...name from classes where id in (select cls_id from students); -- 行级子查询: 子查询返回的结果是一行(一行多列) -- 查找班级年龄最大

    5.3K20

    MySQL查询语句执行顺序详解

    在编写SQL查询语句时,我们通常会按如下顺序书写: sql复制代码SELECT [DISTINCT] column1, column2, ......以下是MySQL查询语句各个子句的实际执行顺序: FROM 子句 JOIN 子句 WHERE 子句 GROUP BY 子句 HAVING 子句 SELECT 子句 DISTINCT 子句 ORDER BY...FROM 子句 执行顺序的第一步是确定数据来源。MySQL从指定的表中读取数据。这是查询的基础,其他所有操作都基于此数据集。 sql 复制代码 FROM table1 2....GROUP BY 子句 如果查询语句中包含GROUP BY子句,MySQL会对过滤后的数据进行分组。分组操作通常与聚合函数(如COUNT、SUM、AVG等)结合使用。...总结 理解MySQL查询语句的执行顺序有助于编写更高效的查询。通过合理安排各个子句,我们可以更好地控制查询的行为和性能。

    2.4K00

    ④【数据查询】MySQL查询语句,拿来即用。

    个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ ④【数据查询】MySQL...查询语句,拿来即用。...条件查询 DQL - 条件查询: ①根据条件查询字段 SELECT 字段列表 FROM 表名 WHERE 条件; 条件: ①比较运算符: >:大于 >=:大于等于 <:小于 <=:小于等于 =:等于 查询 DQL - 分页查询: 对查询进行分页: SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数; 注意: ①起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示的查询记录数...②分页查询在不同的数据库中实现方式不同,MySQL是LIMIT ③如果查询的是第一页数据,可以省略起始索引,直接LIMIT 10

    2.1K30

    MySql基础之面试查询语句

    FROM employees WHERE last_name = 'Zlotkey' ) 2、查询工资比公司平均工资高的员工的员工号,姓名和工资 select e.employee_id...from employees e2 where e2.job_id = 'SA_MAN' ) 4、查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名 方法一:in方式 select...'%u%' ) 5、查询管理者是King的员工姓名和工资 方式一:自连接 select e1.last_name ,e1.salary from employees e1 , employees...,s.Sname 4、查询没学过“叶平”老师课的同学的学号、姓名 # 1.先查询学过的学生的id # 2.根据not in获取没学过的 select s.Sid,s.Sname from student...# 1.查询叶平老师教的学生信息 # 2.根据学生分组查询每个人学过的数量 # 3.每个人数量 = 老师所教所有学科的数量 select s.Sid,s.Sname from student s where

    38200
    领券