精华内容
下载资源
问答
  • 每位程序员们应该都知道,增删改查是mysql最基本的功能,而其中查是最频繁的操作,模糊查找是查询中非常常见的操作,...下面这篇文章就给大家详细介绍了mysql模糊查询like与REGEXP的使用,有需要的朋友们可以参考学习。
  • mysql带有子查询like查询

    千次阅读 2017-11-27 09:20:03
    SELECT * FROM by_app_categories WHERE c_name LIKE CONCAT('%', (SELECT `name` FROM b_catelist WHERE type="wangluo"), '%')
    SELECT * FROM by_app_categories WHERE c_name LIKE CONCAT('%', (SELECT `name` FROM b_catelist WHERE type="wangluo"), '%')
    展开全文
  • MYSQL UPDATE使用子查询

    万次阅读 2018-07-26 18:00:56
    修改前数据: 需求:将小盒子学院中拥有两个学号以上学生的学号前面加上前缀“hr...今天我像以前操作mysql写了一个update sql: update edu_user_copy set stuNum=concat('hr',stuNum) where stuNum in (selec...

    修改前数据:

    需求:将小盒子学院中拥有两个学号以上学生的学号前面加上前缀“hr”

    今天我像以前操作mysql写了一个update sql:

    update edu_user_copy set stuNum=concat('hr',stuNum) where stuNum in (select stuNum from edu_user_copy 
    where company like '小盒子学院%' group by stuNum having count(stuNum)>1);

    根据子查询的结果,更新表中的一个字段。

    在mysql数据库中执行后报错:

    一直没弄明白这个错误,然后经过多次度娘后,发现mysql update时,更新的表不能在set和where中用于子查询。

    修改上面的sql为mysql数据库支持的方式:

    update edu_user_copy du,(select stuNum from edu_user_copy 
    where company like '小盒子学院%' group by stuNum having count(stuNum)>1) b
    set du.stuNum=concat('hr',b.stuNum)
    where du.stuNum=b.stuNum;

    修改后数据:

    ok,大功告成!

     

    展开全文
  • 解决 调整子查询为关联查询: EXPLAIN SELECT COUNT( 1 ) FROM fich_base t1 LEFT JOIN cont_base t2 ON t1.contract_id = t2.id LEFT JOIN orga_base t3 ON t3.id = t1.transfer_organization_id LEFT JOIN user_...

    问题

    生产某些功能执行较慢,找出来对应的sql,看看执行计划,如下:
    sql:

    SELECT
     COUNT( 1 ) 
    FROM
     fich_base t1
     LEFT JOIN cont_base t2 ON t1.contract_id = t2.id
     LEFT JOIN orga_base t3 ON t3.id = t1.transfer_organization_id
     LEFT JOIN user_base t4 ON t4.id = t2.sale_user_id
     LEFT JOIN empl_base t5 ON t5.id = t4.employee_id
     LEFT JOIN vehi_brand t6 ON t6.id = t2.vehicle_brand_id
     LEFT JOIN vehi_base t7 ON t2.vehicle_id = t7.id
     LEFT JOIN deal_base t8 ON t8.id = t2.dealer_id
     LEFT JOIN fich_review_node t9 ON t1.id = t9.final_check_id
     LEFT JOIN fich_review_process t10 ON t9.id = t10.review_node_id 
    WHERE
     t1.obj_status = 1 
     AND t2.factory_end_date IS NOT NULL 
     AND t2.obj_status = 1 
     AND t2.number LIKE CONCAT( '%', CONCAT( 123, '%' ) ) 
     AND (
      t2.personal_name LIKE CONCAT( '%', CONCAT( 1234, '%' ) ) 
      OR t2.enterprise_name LIKE CONCAT( '%', CONCAT( 1234, '%' ) ) 
     ) 
     AND t2.vin_number LIKE CONCAT( '%', CONCAT( 123, '%' ) ) 
     AND t1.transfer_organization_id IN ( SELECT u.organization_id FROM user_rel_organization_view u WHERE u.user_id = 1 AND u.obj_status = 1 ) 
     AND t1.review_status = 2 
     AND t10.review_status = 0 
     AND t9.review_count = 1 
     AND t9.review_status = 0 
     AND timestampdiff( DAY, t2.factory_end_date, NOW( ) ) <= 30 
     AND t2.`status` != 3
    

    执行计划:
    在这里插入图片描述
    有说in 接子查询会导致索引失效。

    解决

    调整子查询为关联查询:

    EXPLAIN 
    SELECT
     COUNT( 1 ) 
    FROM
     fich_base t1 
     LEFT JOIN cont_base t2 ON t1.contract_id = t2.id
     LEFT JOIN orga_base t3 ON t3.id = t1.transfer_organization_id
     LEFT JOIN user_base t4 ON t4.id = t2.sale_user_id
     LEFT JOIN empl_base t5 ON t5.id = t4.employee_id
     LEFT JOIN vehi_brand t6 ON t6.id = t2.vehicle_brand_id
     LEFT JOIN vehi_base t7 ON t2.vehicle_id = t7.id
     LEFT JOIN deal_base t8 ON t8.id = t2.dealer_id
     LEFT JOIN fich_review_node t9 ON t1.id = t9.final_check_id
     LEFT JOIN fich_review_process t10 ON t9.id = t10.review_node_id 
     # 这里调整了
     left join user_rel_organization_view t11 on t1.transfer_organization_id=t11.organization_id
    WHERE
     t1.obj_status = 1 
     AND t2.factory_end_date IS NOT NULL 
     AND t2.obj_status = 1 
     AND t2.number LIKE CONCAT( '%', CONCAT( 123, '%' ) ) 
     AND (
      t2.personal_name LIKE CONCAT( '%', CONCAT( 1234, '%' ) ) 
      OR t2.enterprise_name LIKE CONCAT( '%', CONCAT( 1234, '%' ) ) 
     ) 
     AND t2.vin_number LIKE CONCAT( '%', CONCAT( 123, '%' ) ) 
     # 这里调整了
     AND t11.user_id = 1 AND t11.obj_status = 1
     AND t1.review_status = 2 
     AND t10.review_status = 0 
     AND t9.review_count = 1 
     AND t9.review_status = 0 
     AND timestampdiff( DAY, t2.factory_end_date, NOW( ) ) <= 30 
     AND t2.`status` != 3
    

    执行计划都走索引了
    在这里插入图片描述

    总结

    对于sql,在编写完成后,要关注执行计划检查,另外对于in,exist,要关注数据量的变化对索引的影响。

    展开全文
  • mysql 子查询

    千次阅读 2018-03-08 00:35:02
    如果将该“select 5000”的子查询语句,替换为“select出来所有商品的平均价”,就具有了现实含义。 子查询是为主查询服务的 都是子查询获得一定的结果数据之后,才去执行主查询; 在形式上,可以有如下表达:...

    基本含义

    就是在一个查询语句(select语句)中的内部,某些位置,又出现的“查询语句”。

    例:
    这里写图片描述
    修改后:
    这里写图片描述

    如果将该“select 5000”的子查询语句,替换为“select出来所有商品的平均价”,就具有了现实含义。

    • 子查询是为主查询服务的
    • 都是子查询获得一定的结果数据之后,才去执行主查询;

    在形式上,可以有如下表达:

    • selelct 字段或表达式或子查询 [as 别名] from 表名或链接结果或子查询 where 字段或表达式或子查询的条件判断

    即可以在这几个位置出现子查询(其中having其实也可以,因为它跟where是一样含义);

    子查询,按位置(场合)分:

    类型形式
    作为主查询的结果数据select c1,(select f1 from tab2) as f11 from tab1; #这里子查询应该只有一个数据(一行一列,标量子查询)
    作为主查询的条件数据select c1 from tab1 where c1 in (select f1 from tab2); #这里子查询可以是多个数据(多行一列,列子查询)
    作为主查询的来源数据select c1 from (select f1 as c1, f2 from tab2) as t2; #这里子查询可以是任意查询结果(表子查询)

    常见子查询

    比较运算符中的子查询

    形式:

    • 操作数 比较运算符 (标量子查询);

    说明:

    • 操作数,其实就是比较运算符的2个数据之一而已,通常就是一个字段名;
      select ....  from XXX where  id > 5;

    例:

    • 找出最高价的商品;
    select * from product  where  price = (select  max(price)  from  product );

    使用in的子查询

    • 以前用的in的用法:
    XX  in  (值1,值2,值3,....);
    • 则in子查询为:
    XX  in  (列子查询)

    例:

    • 找出所有类别名称中带“电”这个字的所有商品;
    select  *  from  product  where  protype_id  in( 
    select  protype_id  from  product_type  where  protype_name  like ‘%电%’
    );

    使用any的子查询

    形式:

    操作数 比较运算符 any  (列子查询);

    含义:

    • 当某个操作数(字段) 对于该列子查询的其中任意一个值,满足该比较运算符,则就算是满足了条件;
      例:
    select  *  from  tab1  where  id >  any  (select  f1  from  tab2);

    使用all的子查询:

    形式:

    操作数  比较运算符 all   (列子查询);

    含义:

    • 当某个操作数(字段) 对于该列子查询的所有数据值,都满足该比较运算符,才算满足了条件;

    例:

    select  *  from  tab2  where  f1  >  all  ( select  id  from   tab1 );

    使用some的子查询

    • 一句话:some是any的同义词。

    使用exists的查询

    形式:

    where  exists( 子查询 )

    含义:

    • 该子查询如果“有数据”,则exists的结果是true,否则就是false

    说明:

    因为,exists子查询的该含义,造成主查询往往出现这样的情形:要么全都取出,要么都不取出。如果局限于这个含义(使用情形),其基本就失去了它的现实使用意义。

    所以:

    实际应用中,该子查询,往往都不是独立的子查询,而是会需要跟“主查询”的数据源(表),建立某种关系——通常就是连接关系。建立的方式是“隐式的”,即没有在代码上体现关系,但却在内部有其连接的“实质”。

    • 此隐式连接方式,通常就体现在子查询中的where条件语句中,使用了主查询表中的数据(字段);

    例:

    • 查询商品表中其类别名称中带“电”这个字的所有商品;
      这里写图片描述

    结果就:
    这里写图片描述

    注意:
    - 这种子查询语句,没法“独立存在(独立运行)”,而是必须跟主查询一起使用;
    - 其他子查询,是可以独立运行的,而且会得到一个运行的结果。
    - 该子查询中的条件,应该设定为跟主查询的某个字段有一定的关联性判断,通常该判断就是这两个表的“本来该有的连接条件”

    最后一个结论:

    如果一个查询需求,可以使用连接查询的,也可以使用子查询得到,则通常推荐使用连接插叙,效率归更高。

    展开全文
  • 前言:正常情况下,连接查询是比子查询效率要高的,因为子查询需要创建临时表。但是,在实际测试中,有部分情况子查询效率会比连接查询要高 1:去重的情况下 ①连接查询 SELECT DISTINCT itm.team_id FROM ...
  • 文章目录一、创建数据库和数据表二、简单查询三、条件查询条件查询between and条件查询 is null 、is not null条件查询 in四、模糊查询五、分组查询 一、创建数据库和数据表 dept.sql 部门表 SET NAMES utf8mb4;...
  • MySQL命令大全

    2018-01-15 11:19:17
    MYSQL常用命令 1.导出整个数据库 mysqldump -u 用名 -p –default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1) mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导出一个表 ...
  • 子查询 1.不相关子查询:()里的查询可以独立运行,先执行子查询,在执行外查询 单行子查询:因为子查询的结果是单行单列 – 查询比sallen的薪水高的员工 select ename,sal from emp where sal>(select sal from ...
  • 一般情况下的模糊查询都是:select * from xxxtable where xxxname like %**%; 本文介绍了SQL like子句的另一种实现方法(速度比like快),以下这两个sql的使用都会比 like快一些 select * from table where ...
  • 1,case函数, select* case when 条件1 then(输出1) when 条件2 then(输出2) ...2,查询最大值,这里查询语句是错误的,不能这样查询,有两个显示标题,max(price) 它会从最上面开始比较,不会在全部...
  • mysql数据库sql优化——子查询优化

    千次阅读 2015-08-06 13:06:15
    1、什么是子查询、表关联查询: 子查询:是指在主sql语句中的select或where子句中使用select查询语句;select a.name,(select b.name from b where b.id=a.id) from a where a.name lik 'a%' 表关联查询:指多个表...
  • SELECT c1.id, NAME, ( SELECT count(*) FROM collection WHERE location LIKE CONCAT('%',c1.id , '/') ) AS hasSon FROM collectio...
  • MySQL 面试题

    万次阅读 多人点赞 2019-09-02 16:03:33
    MySQL 面试题 MySQL 涉及的内容非常非常非常多,所以面试题也容易写的杂乱。当年,我们记着几个一定要掌握的重心: 重点的题目添加了【重点】前缀。 索引。 锁。 事务和隔离级别。 因为 MySQL 还会有部分内容和...
  • MySQL嵌套查询详细笔记(子查询

    万次阅读 多人点赞 2017-11-06 18:08:36
    MySQL嵌套查询(子查询
  • mysql 批量子查询插入

    千次阅读 2016-06-04 13:46:47
    insert into tb_indiana_member_bak20160603  ...select * from `tb_indiana_member` t where t.`indiana_member` in (3768,4558,6126,6574,6596,6597) and t.`create_date` like '2016-06-03%' and t.`payment_sn
  • mysql update where子查询实现方式

    万次阅读 2018-11-12 12:27:56
    mysql的update的一些特点 1、更新的表不能在set和where中子查询; 2、可以对多个表进行更新(sqlserver不行); ...写法:将子查询提到前面和查询的表一起类似关联查询的写法。 update 子查...
  • – 10、用子查询实现查询选修“高等数学”课的全部学生的高等数学总成绩 step1:SELECT cid FROM course WHERE cname=‘数学’ step2:SELECT SUM(cmark) FROM mark WHERE cid =(step1) SELECT SUM(cmark) FROM ...
  • 查询数据指从数据库中获取所需要的数据。查询数据是数据库操作中...1、查询语句的基本语法2、在单表上查询数据3、使用聚合函数查询数据4、多表上联合查询5、子查询6、合并查询结果7、为表和字段取别名8、使用正则表达式
  • MySQL - 模糊查询 - 分组 group_concat() - 多表关联 - 子查询 exsits/ any/ all
  • MySQL模糊查询使用INSTR替代LIKE

    千次阅读 2017-09-27 21:33:34
    mysql instr
  • 后来发现这两个特殊字符在sql like查询中是通配符 可以代表任意字符 最后想出了2种解决方案 1. 转义 这两个特殊字符 就可以实现 2.使用内部函数INSTR,代替传统的LIKE方式查询,并且速度更快。 INSTR()函数返回...
  • 将以下命令复制进MySQL: -- 创建数据表 CREATE TABLE IF NOT EXISTS tdb_goods( goods_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, goods_name VARCHAR(150) NOT NULL, goods_cate VARCHAR(40)...
  • MySql多表查询,子查询

    千次阅读 2020-06-06 21:51:12
    大数据学习笔记——MySql练习 #1 #查询“李新”老师所授课程的课程名称 select distinct course.cname from teacher,teaching,sc,course where teacher.Tno = teaching.tno and teaching.cno = sc.cno and sc.cno ...
  • 目录一、总结二、语法三、LIKE举例3.1"%"的用法3.1.1举例表3.1.2代码3.1.3运行结果3.2“-”的用法3.2.1举例表3.2.2代码3.2.3运行结果四、REGEXP举例4.1“[ ]”的用法4.1.1举例表4.1.2代码4.1.3运行结果4.2“[^]”的...
  • MySQL重复查询

    2020-12-14 15:14:36
    子查询 1. 基本查询回顾 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J select * from EMP where (sal>500 or job='MANAGER') and ename like 'J%'; 按照部门号升序而雇员的工资...
  • mysql> select * from player; +----+-----------------------------+-------+ | id | name | level | +----+-----------------------------+-------+ | 1 | 火狗 | 10 | | 2 | 裂焰之狂犬 | 10 |
  • Mysql 正则 实现 like in 效果

    千次阅读 2020-01-08 19:15:01
    MySQL 中 不能 同时 使用 like in 关键字2.MySQL 函数 的 高级 应用 REGEXP 与 GROUP_CONCAT 组合 使用 实现 like in 效果1.情景 描述2.解决 思路2.1. 使用 GROUP_CONCAT()函数 对 查询 出 的 多行 数据 结果 ...
  • mysql面试题

    千次阅读 2019-09-23 12:28:36
    1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用。表锁,不会出现死锁,适合小数据,小并发。 2.innodb是支持事务的存储引擎,合于插入和更新操作比较多的应用,设计合理的话是行锁(最大区别就在锁的级别上)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,019
精华内容 26,407
关键字:

likemysql子查询

mysql 订阅