有谁可以解释一下这段查询的意思?

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          |

+---------------------------------------+


慕虎7371278
浏览 114回答 3
3回答

胡说叔叔

代码为: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)作为一个条件,作为单表查询的条件,进行查询就是了

达令说

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表此时是无法使用的

qq_遁去的一_1

查出table1表中,包含 table2表中t2_name包含:‘wangwu’ 的table1_id及table1表中t1_name包含:‘zhansan’的
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL