根据我的理解你的sql语句应该和你说的相反:
   如果一条记录中有一个字段没有a那这一条就不显示你把上面的and 换成 or 看看会不会出现你所说的情况

解决方案 »

  1.   

    好像用and or都不会出现三次呀。
      

  2.   

    用or在逻辑上是肯定不对的,我觉得用and就因该没有问题,而且在我们的数据库里面测试也没有问题,你的数据库里面是不是就正好有3条符合条件的一样的记录呀?
      

  3.   

    where locate('a',字段)这个可以吗?
      

  4.   

    select * from customer,person where customer.customername like '%a%' or customerdeptname like '%a%' or person.contact_person='%a%'这个语句,把没有a的也显示出来了。什么原因?
      

  5.   

    可能是因为你有些纪录中间有中文,会出现这种情况。该一下mysql的语系可能可以解决记得你以前提过一个全文搜索的问题,建议你用全文检索功能。
    eg:
    创建数据表的时候加上fulltext索引
    CREATE TABLE articles (
          id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, 
          title VARCHAR(200),
          body TEXT,
          FULLTEXT (title,body)
    );以后就可以用
    SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('findKey');
      

  6.   

    知道怎么更改语系吗?改为gbk就可以解决这种问题了
      

  7.   

    my.cnf有可能是my.ini文件里
    default_character_set=gbk
    或把数据库中的中文字段属性改为binary
      

  8.   

    不同的版本可能配置文件不同。
    可能是
    my.cnf
    my-example.cnf
    my.ini
    三者之一,其中前两个文件要在dos要才可以看到全名
    在[mysqld]项下面加上一行
    default-character-set=gbk
    重新启动mysql就行了
      

  9.   

    同一条记录如果显示几次应该用distinct来去掉重复记录。
      

  10.   

    另外在模糊查询中应该用like而不应该用"="。
      

  11.   

    同意 squiral(丢丢)  teaps(teaps)
      

  12.   

    select * from customer,person where customer.customername like '%a%' or customerdeptname like '%a%' or person.contact_person or '%a%'用=号是打错了,实际上是OR,用中文查没问题,但用英文就不行