表AID    NAME   
10    AAA
101   DDDD
1026  CCCC
...
20    BBB
201   SSS
2012  MMM
...
30    QDA
301   DQDF
30012 DWRGT
.......表B
id   name
101  DDDD
201  CCCC
300  CDAF
4123 adsfsdaf
...
结果:取所有表A中   排除     '表B的id + %' 的记录 

解决方案 »

  1.   

    select * from a where not eixsts(select 1 from b where id=a.id)
      

  2.   

    --sorry exists打错误
    select * from a where not exists(select 1 from b where id=a.id)
      

  3.   

    SELECT A.* FROM  A WHERE NOT EXISTS(SELECT 1 FROM B WHERE B.ID LIKE LTRIM(A.ID)+'%')
      

  4.   

    --------------------------------------------------------------------------
    --  Author : htl258(Tony)
    --  Date   : 2010-04-08 13:54:29
    --  Version:Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86) 
    --          Mar 29 2009 10:27:29 
    --          Copyright (c) 1988-2008 Microsoft Corporation
    --          Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
    --------------------------------------------------------------------------
    --> 生成测试数据表:aIF NOT OBJECT_ID('[a]') IS NULL
    DROP TABLE [a]
    GO
    CREATE TABLE [a]([ID] INT,[NAME] NVARCHAR(10))
    INSERT [a]
    SELECT 10,'AAA' UNION ALL
    SELECT 101,'DDDD' UNION ALL
    SELECT 1026,'CCCC' UNION ALL
    SELECT 20,'BBB' UNION ALL
    SELECT 201,'SSS' UNION ALL
    SELECT 2012,'MMM' UNION ALL
    SELECT 30,'QDA' UNION ALL
    SELECT 301,'DQDF' UNION ALL
    SELECT 30012,'DWRGT'
    GO
    --SELECT * FROM [a]--> 生成测试数据表:bIF NOT OBJECT_ID('[b]') IS NULL
    DROP TABLE [b]
    GO
    CREATE TABLE [b]([id] INT,[name] NVARCHAR(10))
    INSERT [b]
    SELECT 101,'DDDD' UNION ALL
    SELECT 201,'CCCC' UNION ALL
    SELECT 300,'CDAF' UNION ALL
    SELECT 4123,'adsfsdaf'
    GO
    --SELECT * FROM [b]-->SQL查询如下:
    SELECT A.* FROM  A WHERE NOT EXISTS(SELECT 1 FROM B WHERE A.ID LIKE LTRIM(B.ID)+'%')
    /*
    ID          NAME
    ----------- ----------
    10          AAA
    1026        CCCC
    20          BBB
    30          QDA
    301         DQDF(5 行受影响)
    */
      

  5.   

    select * from (select a.*,b.id as c from A a left join B b on a.id=b.id) c where c.c is null
      

  6.   

    SELECT A.* FROM  A WHERE NOT EXISTS(SELECT 1 FROM B WHERE A.ID LIKE LTRIM(B.ID)+'%')