1.in 后面是记录集,如:
select * from table where uname in(select uname from user)2.in 后面是字符串,如:
select * from table where uname in('aaa',bbb','ccc','ddd','eee',ffff'')注意:这里一定要将字符串用单引号'' 标注起来;
3.in 后面是数组,用如下方法,请参考:
//$pieces是含数据的数组for($i=0$i<count($pieces)$i++){
$uname=$uname."'".$pieces[$i]."',"
}
$the_uname ="uname in(".$uname."'')"
select * from table where ".$the_uname."
备注:这种方法的原理其实很简单,二就是把数组编程上面“第2种情况”的形式。
这是用来查询,在字段条件符合某个集合中任意一个值时,返回这条数据例:
where class_name in ('first','second','third')
表示字段class_name中有'first'或者'second'或者'third'中任意一个都符合条件,会被查询出来
多数据库服务器都只把IN()看作多个OR的同义词,因为它们在逻辑上是相等的。MYSQL不是这样的,它会对IN()里面的数据进行排序,然后用二分法查找个是否在列表中,这个算法的效率是O(Logn),而等同的OR子句的查找效率是O(n)。在列表很大的时候,OR子句就会变得慢得多。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)