首先是in,in在检索语句当中检索出来的值和列表提供的值是完全符合的。比如数据当中有一个值是一个字符'name’那么在in语句当中你就要写成“in('name')”他还可以配合not使用,仅不过意思相反。
其次是like,like和in是有一定区别的,like一般与通配符一起使用,他可以检索出一些特地定格式的字符。比如在一系列的数据当中,你要求检索出以数字1开头的数据,你就可以使用like'1%'。这里要说明一下sql提供的通配符主要有四种 '%', '_', '[ ]', '[ ^ ]'。下面对通配符做一些简单说明:
1、'%'其后可用于接无数个字符串:在查询中如此使用like 's_',即可查出以s开头的值;
2、'_'其后仅可以得到一个字符,如以sales为例,like's_'如此使用,不能找出sales,而应like 'sale_'即可查出sales;
3、'[ ]'表示出现的字符是在一定的范围内,一般情况下它是配合'%'使用的。如like ’p[ r,o]%,他就可以查出以p开头的值,并且其后第二个字符,是r,或者是o,即pocket,product、、、
4、 '[ ^ ]'是与其相反的,如like ‘ p[^ r,o]% ',就是检索出以p开头但第二个字符不是r或o的字符。
希望我的回答能对你有所帮助
select * from 表 where name in (select name2 from 表)
select * from 表 where name like '张%'
通过上面的例子可以看出:
第一个 name in 后面是一个查询,查询出是一组数据,比如name2里查询结果是:'张三','李四','王五','赵六'
那么就查询出表内name包含了 '张三','李四','王五','赵六'的项目
第二个 name like '张%'
like 表示模糊查询
里面包含了通配符%
%代替任意N个字符
还有通配符:单个下横杠: _
_表示任意一个字符
也就是:查询name like '张%' 是查询结果里必须满足所有'张'字开头的数据,'张三','张四',张五','张XX','张XXX','张XXXXXXX'
都满足条件
如果用通配符name like '张_'查询name 里包含了所有'张'字开头的后面跟一个字符的数据,,'张三','张四',张五','张XX','张XXX','张XXXXXXX'
职能显示'张三','张四',张五'
而'张XX','张XXX','张XXXXXXX'就不满足条件
IN是具体匹配到其中包含的某一个值,可以在嵌套子查询时候用,也可以其后写具体的某几个值
LIKE是用于模糊查询,当不确定某些具体的字段时,可以利用通配符匹配,查询到自己想要的结果
like 可以用通配符匹配,一般用于模糊查询的
in相当于是多选
两个用途是不一样的
你自己上机写两条语句试试不就明白了