Mysql子查询

问题描述

有谁可以解释一下这段查询的意思? SELECT * FROM table1 t1  WHERE 1=1  and t1_id in (select table1_id from table2 t2 where 1=1  and (t2.t2_name like '%wangwu%'  or  t1.t1_name like '%zhansan%') ); table1  +---------------------+| t1_id |   t1_name   |+---------------------+| 100   |  zhansan     |+---------------------+ table2 +----------------------------------+| t2_id |   t2_name   |   table1_id |+--------------------------------------+| 200   |  wangwu   |   100          |+---------------------------------------+

解决方案

代码为:SELECT * FROM table1 t1 WHERE 1=1 and t1_id in (select table1_id from table2 t2,table t1 where t1_id=t2_id and t2.t2_name like '%wangwu%' or t1.t1_name like '%zhansan%');根据你给出的可以知道,这是个两张的表的联合后模糊查询,意思 就是通过链接 后,把表一中名字(即t1_name='%zhansan%')中 含有“zhansan” 或把表二中名字(即t2_name='%wangwu%')中 含有 “wangwu” 可以这两种,两者若有一个成立就可以得到一个表一的编号(t1_id),此时就得到一个或多个id,然后我们就在根据得到的id,把这个id(注释:红色部分就是求得id)作为一个条件,作为单表查询的条件,进行查询就是了
解决方案二:
有经常做EXCEL和数据库交互的吗?把数据库中的数据,拷贝到EXCEL中的。DbTools工具下载:http://cuishuangjia.iteye.com/admin/blogs/1867417支持ORACLE,MYSQL,SQLSERVER,POSTGRE四种数据库相互转换功能功能:1。将数据库中的表结构和数据保存到EXCEL中。2。将EXCEL中的数据,同步到数据库中。3。当表结构发生变化时,数据不会丢失。4。根据EXCEL中的表结构,生成建表语句SQL文。5。多用户使用该软件时,可以随时记录某个用户对数据库的操作。6。可以为进行压力测试,自动生成数据。7。导出表结构,根据表结构和数据库中的表结构进行差分。8。导出DB结构,和现有环境DB进行表结构差分9。导出用户自定义表结构,根据表结构导入,导入数据前对EXCEL校验进行数据库验证和业务逻辑验证数据库第三方工具交流企鹅群:184715368
解决方案三:
select table1_id from table2 t2 where 1=1 and (t2.t2_name like '%wangwu%' or t1.t1_name like '%zhansan%')其中t1.t1_name like 中会报错吧,t1表此时是无法使用的
解决方案四:
查出table1表中,包含 table2表中t2_name包含:‘wangwu’ 的table1_id及table1表中t1_name包含:‘zhansan’的
解决方案五:
和这个是等效的 :SELECT t1.* FROM table1 t1,table2 t2 WHERE t1.t1_id =t2.table1_id and (t2.t2_name like '%wangwu%' or t1.t1_name like '%zhansan%') ;
解决方案六:
语句没有问题吗?可以执行?

时间: 2024-10-31 04:50:44

Mysql子查询的相关文章

mysql子查询慢的问题

  当你在用explain工具查看sql语句的执行计划时,若select_type 字段中出现"DEPENDENT SUBQUERY"时,你要注意了,你已经掉入了mysql子查询慢的"坑"...下面我们来看一个具体的例子 有这样一条查询语句: SELECT gid,COUNT(id) as count FROM shop_goods g1 WHERE status =0 and gid IN (SELECT gid FROM shop_goods g2 WHERE

sql性能优化-mysql子查询是否被重复执行?

问题描述 mysql子查询是否被重复执行? 请教!mysql返回固定结果集时,是否被重复执行 例如1:select t.*,(select count(1) from table01) from table01 t; 例如2:select t.*,(select count(1) from table01 t2 where t2.key=t1.key) from table01 t1 ;--像这种嵌套的子查询是会被重复执行的. 疑问:上面例子1中的子查询遍历过程中,都是固定结果集,会被重复执行N

MySQL子查询用法实例分析_Mysql

本文实例讲述了MySQL子查询用法.分享给大家供大家参考,具体如下: 假设表my_tbl包含三个字段a,b,c:现在需要查询表中列a的每个不同值下的列b为最小值的记录量. 比如表记录为: a  b  c 1  3  'cd' 2  3  'nhd' 1  5  'bg' 2  6  'cds' 1  7  'kiy' 3  7  'vsd' 3  8  'ndf' 希望得到结果为: a  b  c 1  3  'cd' 2  3  'nhd' 3  7  'vsd' (1) 其中一个做法:先查出

MySQL子查询的几种常见形式介绍_Mysql

mysql子查询的几种常见写法: 复制代码 代码如下: select * from xxx where col = [any|all](select * from xxxx);   该句法可分为加关键词和不加关键词的写法,当不加关键词的时候,子查询语句返回的是一个离散值(注意是一个),查询语句将以子查询语句的结果作为自己 where子句的条件进行查询,该句法可以在子查询语句前加入any.all.some等关键字,此时子查询语句返回的是一组离散值.any则表示,查询语句是以子查询返回的值作为一个范

mysql子查询where/having/in/exists/from例子

where/having查询 MySQL可以在where子句或者having子句中包含子查询.包含在圆括号内的子查询,优先级高于比较和逻辑操作符.in操作符或者 exists操作符. 也可以在一个having子句中的比较运算符前使用子查询,从而用它对父查询创建的组进行过滤. where和having的区别 HAVING是先分组再筛选记录,WHERE在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前:而 HAVING子句在聚合后对组记录进行筛选. 作用的对象不同.WHER

对MySQL子查询的简单改写优化_Mysql

使用过oracle或者其他关系数据库的DBA或者开发人员都有这样的经验,在子查询上都认为数据库已经做过优化,能够很好的选择驱动表执行,然后在把该经验移植到mysql数据库上,但是不幸的是,mysql在子查询的处理上有可能会让你大失所望,在我们的生产系统上就由于碰到了这个问题: select i_id, sum(i_sell) as i_sell from table_data where i_id in (select i_id from table_data where Gmt_create

MYSQL子查询与连接

37:子查询与连接SET 列名 gbk;//改变客户端数据表的编码类型. 子查询子查询(Subquery)是指出现在其他SQL语句内的SELECT子句例如SELECT * FROM t1 WHERE col1=(SELECT col2 FROM t2);其中SELECT * FROM t1称为Outer Query/Outer StatementSELECT col2 FROM FROM t2,称为SubQuery 子查询指嵌套在查询内部,且必须始终出现在圆括号内.子查询可以包含多个关键字或者条

Mysql子查询和联合(UNION)查询详解

查询:  在select查询中,又嵌套了一个select查询.一个是外层查询,另一个是内层查询. Where子查询 就是在where查询语句有一个select语句,把内层查询的结果当做外层查询的条件. From子查询 在from 查询语句中,有一个select语句,把内层查询结果作为一张临时表,供外层再一次查询. 区别: 对于不是唯一取值的列,使用where子查可能会出现不正确的结果.如果用from,有分组的情况下,我们要通过排序把需要的记录放在第一的位置上. Exists #查询有商品的栏目

mySQL子查询拿不出数据

问题描述 我的mySQL是5.0版本的可是select * from rights where id not in ( select id from rights limit 80) limit 10;这句还是说不支持这是为什么呢? 解决方案 首先 你的版本可能太低了不支持这个子查询:当然我的也不支持 所以出错引用This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'如果你的 意思是分页 或者查询第