假如你一个表如下所示:
id
name
1张三
2李四
3王五
我们一般查询多条数据的时候,条件一般是某个区间
如:>, <, between and, IN
代码如下复制代码
SELECT * FROM table_name WHERE id IN (2,1,3)
上面这条SQL是查询id是2,1,3的数据
假如你只是想查询出来数据而已,则没有什么问题
但你想排序方面也有要求的话,你会发觉,那条SQL查出来的数据是这样的
id
name
1张三
2李四
3王五
就是说,并没有按2, 1, 3这样的ID顺序来排
select * from `main` where `type` in((select `id` from `A`) and (`select `num` from `B`))
可以着这样写:
select * from `main` where `type` in
((select `id` from `A`) and 'type' in (`select `num` from `B`))
and 连接的是两个条件。
SELECT b.id FROM t_address a, t_unit b WHERE b.utj=1 AND b.ufreeze=2 AND a.id=b.uads and a.sid=3就这个啦!!
原因很简单
b.utj=1不满足的话,那么系统就直接找下一个数据
用的in的话,如果第一个不满足,那么就匹配第二个,第二个不满足,在匹配第三个
,全部不匹配 才找下一条数据!!
这个就可以看到了,可能用IN的话,效率可能会减慢3倍,打个比方
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)