现有一表,其中有一字段为字符型,长度20,字段名BM,希望得到在BM前两位不包括11,22,33,028的记录,注意:11,22,33,028是另一个表PC中的一个名为PCBM的字段,字段类型为字符型,其中有四条记录,分别是11,22,33,028。

解决方案 »

  1.   

    select * from table1 where left(bm,2) not in ('11','22','33','028')
      

  2.   

    to whbjob() 
    谢谢您的回答,如下语句中的‘028’就把‘02’给排除了
    select * from table1 where left(bm,2) not in ('11','22','33','028')
      

  3.   

    select * from table1 where bm not in (select a.bm from table1 a,pc b where (a.bm like b.pcbm+'%'))
    另一种方法可以先查出pc表的pcbm,再查的时候去掉这些条件的记录就可以
      

  4.   

    方法肯定是有的,不过我敢肯定楼上几位所说的都是错的。
    这个肯定能实现,只是本人好久没有SQL了有些忘了,但笨方法还是可以解决的。
    思路是建立一个临时表结构和你要查询的表一样
    再用循环在你要查询的范围之内一个一个和PC表中PCBM字段的前两位做比较
    不包括的就插入到临时表中最后再查询临时表就可以了。注明:这个方法肯定不是最好的方法,但可以帮助你解决问题。
      

  5.   

    我觉得你自己考虑一下你自己的需求,这东西SQL语句脚本好写,但是你的需求要清楚,要求效率的话,还是先搞清楚,你的需求
      

  6.   

    和 stuwe(胜) 差不多的思路,换一种写法,不知道效率是否一样SELECT * FROM BM a Where not exists (SELECT b.编号 FROM PCBM b WHERE a.编号 LIKE b.编号+"%")