问题描述
有谁可以解释一下这段查询的意思? 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%') ;
解决方案六:
语句没有问题吗?可以执行?