精华内容
下载资源
问答
  • 查询游戏历史成绩最高分前100 Sql代码 SELECT ps.* FROM cdb_playsgame ps WHERE ps.credits=(select MAX(credits) FROM cdb_playsgame ps1 where ps.uid=ps1.uid AND ps.gametag=ps1.gametag) AND ps.gametag='...
  • MySQL子查询

    千次阅读 2020-02-28 15:50:53
    多表关联或者表内字段关联时,或做相似功能判断时,往往会使用子查询来解决相应问题 1. 无关子查询: 内查询没有用到外查询的列,而且内查询可以单独运行. 2. 相关子查询: 内查询使用了外查询的列,而且内查询不能单独...

    分类:

    多表关联或者表内字段关联时,或做相似功能判断时,往往会使用子查询来解决相应问题
    1. 无关子查询:

    内查询没有用到外查询的列,而且内查询可以单独运行.

    2. 相关子查询:

    内查询使用了外查询的列,而且内查询不能单独运行.

    子查询的特点

    1. 子查询很灵活,可以解决很多其他查询方式不能解决的问题

    2. 子查询效率很低,其中相关子查询效率最低

    3. 子查询嵌套的层数越多,则效率越低

    为什么相关子查询的效率极其低下?

    内查询用到了外查询的列,每次查询行记录时都会迭代表格中

    每一行的行记录,而这种迭代中产生的值都是动态生成的.

    结论:

    性能排序/优先使用
    关联/分组查询>无关子查询>相关子查询

    找出各个部门中大于他所在部门平均工资的员工名和工资

    mysql>select e.first_name,e.salary from s_emp e
          where e.salary>(select avg(e1.salary) from s_emp e1 	         where e1.dept_id = e.dept_id);
    
    e.id = dept_id = 41
    确定e是否能够被查询出来,e.salary>select avg(e1.salary) from s_emp 					   e1 where e1.dept_id = 41
    

    找出职称相同的员工

    mysql>select first_name from s_emp where title
          in (select title from s_emp group by title having       		count(*)>=2);
    

    exists和not exists

    在子查询中,使用在where字句,它只关心条件是否有存在的可能,

    如果有可能,则返回true,反之则返回false

    not exists与exists正好相反

    找出与’Ben’同部门的员工

    mysql>select e.first_name,e.dept_id from s_emp e
          where exists
          (select 1 from s_emp e1 where e1.first_name='Ben' and
          e.dept_id = e1.dept_id) and e.first_name<>'Ben';
    

    找出各个部门工资排名前二的员工

    mysql>select e.first_name,e.salary,e.dept_id from s_emp e
          where exists
          (select 1 from s_emp e1 where e.dept_id = e1.dept_id and e1.salary>e.salary having count(*)<=1);
    
    mysql>select e.first_name,e.salary,e.dept_id from s_emp e
          where not exists
          (select 1 from s_emp e1 where e.dept_id = e1.dept_id and e1.salary>e.salary having count(*)>1);
    

    解题思路:本部门中比’我’工资高的员工不超过一个

    找出各个部门工资最高的员工,解题思路:本部门中比’我’工资高的人没有*

    mysql>select e.first_name,e.salary,e.dept_id from s_emp e
          where not exists
          (select 1 from s_emp e1 where e.dept_id = e1.dept_id
          and e1.salary>e.salary having count(*)>0);
    
    展开全文
  • MySQL子查询 嵌套查询

    万次阅读 多人点赞 2018-09-27 20:18:58
    子查询:嵌套在其他查询中的查询。 有三张表分别如下: customers: 存储顾客信息 orderitems:只存储订单信息,无客户信息 orders:存储订单号和顾客id     注意:一般在子查询中,程序先运行在嵌套在最内...

    子查询:嵌套在其他查询中的查询。

    有三张表分别如下:

    1. customers: 存储顾客信息

    1. orderitems:只存储订单信息,无客户信息

    1. orders:存储订单号和顾客id

     

     

    注意:一般在子查询中,程序先运行在嵌套在最内层的语句,再运行外层。因此在写子查询语句时,可以先测试下内层的子查询语句是否输出了想要的内容,再一层层往外测试,增加子查询正确率。否则多层的嵌套使语句可读性很低。

     

    子查询训练

    训练1

    查询买了商品为’TNT2’的顾客信息

    子查询中涉及3张表的订单。因此分三步,1. 在orderitems里找出TNT2的订单号;2. 在orders里找出第一步找出的订单号对应的客户id;3. 在customers中找出第二步对应客户的所有信息。

    1. 在orderitems里找出TNT2的订单号

    SELECT order_num FROM orderitems

    WHERE prod_id='TNT2';

    2. 在orders里找出第一步找出的订单号对应的客户id

    SELECT cust_id FROM orders

    WHERE order_num

    IN (SELECT order_num FROM orderitems WHERE prod_id='TNT2');

    3. 在customers中找出第二步对应客户的所有信息       

    SELECT * FROM customers

    WHERE cust_id

    IN (SELECT cust_id FROM orders WHERE order_num IN

    (SELECT order_num FROM orderitems WHERE prod_id='TNT2'));

    这样就得到结果啦~

    子查询一般与IN操作符结合使用,也可用=><等。

     

    另外,子查询还可以用于计算字段。

    训练2

    如,想要查询每个客户的订单数

    分步思考:1. 查询某个客户的订单数;2. 某个客户改为所有客户。

    1. 查询某个客户的订单数

    SELECT COUNT(*) AS orders1 FROM orders WHERE cust_id =10001;

    2. 某个客户改为所有客户

    SELECT cust_name, cust_state,

    (SELECT COUNT(*) FROM orders WHERE orders.cust_id=customers.cust_id)

    AS orders1

    FROM customers

    ORDER BY cust_name;

    注意:当多个表都拥有同样的列名如cust_id时,一定要完全限定列名。

    展开全文
  • mysql 子查询与join性能对比

    千次阅读 2021-01-18 20:39:31
    有如下的数据表:application_daily 11万条数据application_info400多条数据查询结果数据为19498来看下mysql 子查询的例子。例1,子查询 (0.01s)复制代码 代码示例:select sql_no_cache * from application_daily ...

    有如下的数据表:

    application_daily 11万条数据

    application_info400多条数据

    查询结果数据为19498

    来看下mysql 子查询的例子。

    例1,子查询 (0.01s)

    复制代码 代码示例:

    select sql_no_cache * from application_daily where application_info_id in

    (select id from application_info where Team_TeamID=3)

    例2,子查询 (0.002s)

    复制代码 代码示例:

    select sql_no_cache * from application_daily where application_info_id in

    (161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190)

    例3,连接查询,两条语句等价(0.001s)

    复制代码 代码示例:

    select sql_no_cache * from application_daily,application_info where

    Team_TeamID=3 and application_daily.application_info_id=application_info.id

    select sql_no_cache * from application_daily inner join application_info on

    (application_daily.application_info_id=application_info.id) where Team_TeamID=3

    小结:在子查询时,尽量避免使用in条件。

    您可能感兴趣的文章:

    mysql子查询的实例总结

    mysql多表子查询与左连接的代码

    mysql子查询使用EXISTS命令的例子

    mysql子查询中EXISTS用法的例子

    mysql子查询的五种方式

    mysql子查询的用法举例

    mysql update实现子查询的实例分享

    mysql in 子查询效率慢的优化方法详解

    展开全文
  • MySQL子查询(嵌套查询)

    万次阅读 多人点赞 2019-05-10 22:15:31
    一个查询语句嵌套在另一个查询语句内部的查询 常用操作符:ANY(SOME), ALL, IN, EXISTS ...1.带ANY(SOME)关键字的子查询 这里any和some是同义词,都是表示满足任一条件。 例:查询tb1中的所有数...

    一个查询语句嵌套在另一个查询语句内部的查询

    常用操作符:ANY(SOME), ALL, IN, EXISTS

    比较运算符:>, >=, <, <=, != 等

    创建两个表,表明分别是tb1,tb2,并向其各插入了数据。

            

     

    1.带ANY(SOME)关键字的子查询

    这里any和some是同义词,都是表示满足任一条件。

    例:查询tb1中的所有数据,只要大于tb2表中数据的任意值,既符合查询条件。

    select num1 from tb1 where num1>ANY(select num2 from tb2);

     

    2.带ALL关键字的子查询

    例:查询tb1中的所有数据,返回其中比tb2表中任何值都大的数据。

    select num1 from tb1 where num1>ALL(select num2 from tb2);

     

    3.带EXISTS关键字的子查询

    例1:查询fruits表中name字段下是否有apple,若有则查询fruits表中的记录,否则不查询。

    select * from fruits where EXISTS(select name from fruits where name='apple');

    例2:查询tb1表中是否存在num1=13的记录,若存在,则查询fruits表中price大于6.00的记录。

    select * from fruits where price>6.00 and EXISTS (select num1 from tb1 where num1=13);

    相反,可以使用 not exists 查询不存在的,用法相同。

     

    4.带IN关键字的子查询

    表示查询结果在后面子查询的范围之中

    例如:查询tb1表中的num1字段下的数据作为数据列,fruits表中id字段下的数据与其进行比较,返回符合条件的记录。

    select * from fruits where id IN (select num1 from tb1);

     

    5.带比较运算符的子查询

    select * from 表名 where 字段名 > (select ······);

     

     

     

    展开全文
  • mysql 子查询的排序问题

    千次阅读 2019-09-26 16:07:35
    (内层)子查询子查询还可以包括子查询子查询分为嵌套子查询和相关子查询。 嵌套子查询:执行不依赖与外部的查询。一般可以分为:返回单值的子查询 和 返回一个列表的子查询。 例如:select s.*,(select country...
  • MySQL 子查询——查询最大值

    千次阅读 2021-01-18 18:35:56
    子查询指将一个查询语句嵌套在另一个查询语句中。子查询可以在 SELECT、UPDATE 和 DELETE 语句中使用,而且可以进行多层嵌套。在实际开发时,子查询经常出现在 WHERE 子句中。子查询在 WHERE 中的语法格式如下:...
  • 主要介绍了mysql实现多表关联统计(子查询统计),结合具体案例形式分析了mysql多表关联统计的原理、实现方法及相关操作注意事项,需要的朋友可以参考下
  • 主要介绍了MySQL中IN子查询会导致无法使用索引问题,文章给大家介绍了两种子查询的写法,需要的朋友可以参考下
  • 此时from的查询结果此时查询全部null, 此时的t_date 也不会显示,有没有一个简单的办法,不管子查询是否为null,都会显示t_date 字段 ``` select peer_id,type,datausage,live_r, ADDDATE(curdate(),-1) t_date ...
  • mysql子查询中不能使用LIMIT

    千次阅读 2019-01-11 05:21:29
    mysql子查询中不能使用LIMIT /* 今天遇到个问题,如下: This version of MySQL doesn't yet support 'LIMIT &amp; IN/ALL/ANY/SOME subquery' */ 直接po截图和代码 我们可以通过LIMIT来删除表中的数据 第一...
  • Mysql子查询及优化

    千次阅读 2018-07-26 18:17:54
    子查询:当一个查询是另一个查询的子部分时,称之为子查询。 create table t1(k1 int PRIMARY key,c1 int); create table t2(k2 int PRIMARY key,c2 int); insert into t2 values(1,10),(2,2),(3,30); mysql&...
  • mysql子查询

    千次阅读 2015-12-08 14:49:09
    mysql子查询: where子查询、from子查询、exists子查询
  • mysql子查询与join的区别

    千次阅读 2019-07-14 12:38:23
    子查询理解:①先知道需要查询并将数据拿出来(若from 后的表也是一个子查询结果)。②在去寻找满足判断条件的数据(where,on,having 后的参数等)。而这些查询条件通常是通过子查询获得的。 子查询是一种根据结果找条件...
  • Mysql子查询使用limit

    千次阅读 2017-11-28 16:06:22
    Mysql子查询使用limit关联查询是日常开发中常见的场景,但两张大表join操作消耗的资源操作通常是很大的。
  • MYSQL 子查询返回多列显示

    千次阅读 2017-10-28 14:35:51
    因工作需要,目前研究出一种mysql 技能,与大家分享一下。...所以采用多列拼接子查询,然后根据SUBSTRING_INDEX(SOURCE,SEPARETOR,INDEX+1)。 原理:子查询返回拼接列;函数截取还原列 可执行脚本: SELECT 
  • Mysql 子查询效率优化

    万次阅读 2016-10-11 14:39:57
    一、MySQL子查询的位置  当一个查询是另一个查询的子部分是,称之为子查询(查询语句中嵌套含有查询语句)。子查询也是使用频率比较高的一种查询类型。因此,优化子查询,对于整个系统的性能也有直接的影响。 ...
  • mysql 子查询返回多行

    2017-06-07 08:43:09
    select (select assay_name from t_assay_delete b where b.assay_code =a.assay_code)assay_name from t_assay a t_assay_delete 表中有中有重复code 对应不同的name sql会抛出返回多行错误,有什么解决办法?
  • 详解mysql子查询

    千次阅读 2018-12-08 13:17:11
    本文详解mysql中的子查询子查询分为where子查询和from子查询。 where子查询包括标量子查询、列子查询、行子查询、exists子查询 from子查询包括表子查询 1.标量子查询 概念:子查询得到结果是一个数据 (一行...
  • 解决MySQL子查询排序失效的问题

    万次阅读 2018-04-16 09:48:58
    问题描述:高版本的MySQL(5.6以上)在子查询中使用order by 语句后查询结果并不会显示排序后的结果。 以下是我使用的两个解决方法,供参考: 1.当子查询的order by语句后面没有limit关键字时,数据库会自动优化,...
  • 子查询概述: 子查询(Subquery)是指出现在其他 SQl 语句内的 SELECT 子句。 子查询指嵌套在查询内部,且必须始终出现在圆括号内; 子查询可以包含多个关键字或条件 如: DISTINCT , GROUP BY , ORDER BY ,...
  • mysql 子查询in,返回结果集合失败

    千次阅读 2018-10-24 15:20:38
    SELECT * FROM station_quality_detail_info qa INNER JOIN station_info sinfo on qa.station_info_id = sinfo.id WHERE FIND_IN_SET(sinfo.serial_no,(#{...假设stationIds为1,2 查询只会查询出一条...
  • mysql 子查询(七)之子查询排序

    千次阅读 2018-03-02 10:01:42
    大多数子查询不需要排序,没有意义。因为子查询大多数是作为一个结果或参数给主查询使用。但top-n问题除外。举个例子,查询员工表中“行政部”的员工。select * from emp where empdetno = (select empdetno from ...
  • 那么,什么是相关子查询呢?举个例子,查询员工表中薪水大于本部门平均薪水的员工。首先构建思路,说到底还是查询员工,所以主查询是查询员工,然后在where后面增加子查询,查询薪水大于本部门平均薪水。开始写sql,...
  • MYSQL子查询、MYSQL函数,分组(GROUP BY)

    千次阅读 2018-06-24 10:51:34
    子查询一般用于查询一张表内的数据,但条件为其他表的数据值。MYSQL函数统计函数分组:GROUP BY 字段名来分组 //若使用了分组就不能使用where条件进行判断。需要用having(用法跟where一样)...
  • 今天碰到一个数据库问题,需要用到子查询,但尝试了一下发现它很慢: mysql> select * from abc_number_prop where number_id in (select number_id from abc_number_phone where phone = '82306839'); ...
  • mysql子查询,分组拼接GROUP_CONCAT函数

    千次阅读 2018-08-09 15:04:35
    下面这个是查询总条数 select count(id) from (select af.id id,af.aftersaleapplication_id aftersaleapplicationId, af.time time,af.sysuser_id sysuserId,af.status status,af.description description, ...
  • MySQL 子查询操作

    千次阅读 2018-07-29 23:28:13
    子查询 在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句 为什么会有子查询这种用法 数据库有没有记忆力 但查询结果需要的数据,本表已有数据还不够,还需要另外查询. ...
  • 子查询必须跟主查询是同一张表吗?不是。主查询和子查询可以不是同一张表。示例:查询部门名称是sales的员工信息。既然是查询员工信息,那么主查询就是查员工表。员工表里只有部门号,而部门表中有部门名称和部门号...
  • mysql子查询不支持limit问题解决

    千次阅读 2018-04-09 18:02:24
    IN/ALL/ANY/SOME 错误解决这次国庆节回来后的测试中,在一个Mysql表达式中使用嵌套查询,出现了这个错误。原因是内层select语句带有limit子句。在网上查了下,有文章指出:比如这样的语句是不能正确执行的。select...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 246,768
精华内容 98,707
关键字:

mysql子查询

mysql 订阅
友情链接: TURNIN_LED.zip