or 跟 and  在执行数据查询的时候,到底是按照什么方式查询的?
  比如。select * from table where a=1 and b=2;它是先在表中找a=1的记录,然后在a=1的记录中再寻找b=2的记录?还是先找b=2再找a=1的?
    select * from table where a=1 or b=1;呢?
  
我有一个查询select * from table where a like '".$keyword."' or b like '".$keyword."';
我想模糊查询$keyword 在a字段或b字段出现的记录、
  测试了下,用or查询到了全部记录 ,用and却查询到了……这是神马意思?and不是且么?

解决方案 »

  1.   

    AND,指当前记录中字段值同时符合条件才算成功,即且的意思;OR则是当前记录满足一个就筛选成功。
    另:版主老大的话你要听,不然你懂的。
      

  2.   

    我这是两个问题、
    1.select * from table where a=1 and b=2;和
    select * from table where b=2 and a=1;的执行时间是否相同,在数据库内部,是先执行a=1查询,还是b=2查询?又或者全表同时查询a=1 and b=2、? 
    or的情况呢?
    2.and 跟or 的用法我知道、刚才程序少写了一个字母,$keyword写成$keywor了。所以产生一点 疑惑、、
      

  3.   

    按照最基本的流程的话,应该是先找a=1,然后看b等不等于2.第二个OR,应该是先找是a=1的,再找b=2的。
    这也只是我的猜测。如果你是实现富裕的话,可以看看MYSQL的参考手册。后面几章有关于这方面的文档。http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  4.   

    找了一些资料看了下,我的理解是,不管or还是and都是按照从左到右的执行顺序、、
      于是.select * from table where a=1 and b=2还是select * from table where b=2 and a=1
    的执行效率问题,要看a=1和b=2的记录数。记录数少的放在前面,操作时间长的放在后面(如连接运算)、
       or的话,按照我的想法 应该是执行时间一样的。但是不知道从哪隐约记得看过的资料上说,or也是有区别的……
    ps:大家可以 一起讨论、如果你觉得我的这个问题幼稚,没有意义,您可以选择无视我,或者在心里鄙视我、
    但是,请不要把鄙视,说出来。
    我承认我是菜鸟,没有你们这些已经工作了的老前辈水平高、我只是个还在学校为期末考试的奔波的人。但是,你不能否认,我有一颗不懂就问的心……这样有错么?
     
      

  5.   

    赞lz。。
    绝对没有鄙视的意思。
    其实and 和or就是运算符。。
    当然也符合一般运算符的执行顺序(从左到右)。