三个表的数据如下:
表A
id   soft_name             company 
---------------------- 
A   office 2000           microsoft 
A   mcafee agent          mcafee 
A   vnc33                 vnc 
A   qq2007                qq 
A   game1                 game1 
A   game2                 game2 
B   office 2003           microsoft 
B   vnc4.0                vnc 
B   mcafee8i              mcafee 
B   microsoft             microsoft  
B   game3                 game3 表B 
id   name  
---------- 
1    office 
2    mcafee 
3    vnc 
4    microsoft 结果:
id    soft_name   company 
------------------ 
A     qq2007       qq 
A     game1        game1 
A     game2        game2 
B     game3        game3 

解决方案 »

  1.   

    select a.* from a join b on a.soft_name not like b.Name+'%'或用patindex/charindexselect a.* from a join b on patindex('%'+b.Name+'%',a.soft_name)=0
      

  2.   

    select * from 表A a where not exists (select 1 from 表B where charindex(name,a.soft_name)>0)
      

  3.   

    --原始数据:@A
    declare @A table(id varchar(1),soft_name varchar(12),company varchar(9))
    insert @A
    select 'A','office 2000','microsoft' union all
    select 'A','mcafee agent','mcafee' union all
    select 'A','vnc33','vnc' union all
    select 'A','qq2007','qq' union all
    select 'A','game1','game1' union all
    select 'A','game2','game2' union all
    select 'B','office 2003','microsoft' union all
    select 'B','vnc4.0','vnc' union all
    select 'B','mcafee8i','mcafee' union all
    select 'B','microsoft','microsoft' union all
    select 'B','game3','game3'
    --原始数据:@B
    declare @B table(id int,name varchar(9))
    insert @B
    select 1,'office' union all
    select 2,'mcafee' union all
    select 3,'vnc' union all
    select 4,'microsoft'select * from @A a where not exists (select 1 from @B where charindex(name,a.soft_name)>0)/*
    id   soft_name    company   
    ---- ------------ --------- 
    A    qq2007       qq
    A    game1        game1
    A    game2        game2
    B    game3        game3
    */
      

  4.   

    declare @a table(id varchar(2),  soft_name  varchar(20) ,          company  varchar(20))
    insert @a select 'A',   'office 2000',           'microsoft'  
    union all select 'A',   'mcafee agent',          'mcafee'  
    union all select 'A',   'vnc33',                 'vnc'  
    union all select 'A',   'qq2007',                'qq'  
    union all select 'A',   'game1',                 'game1'  
    union all select 'A',   'game2',                 'game2'  
    union all select 'B',   'office 2003',           'microsoft'  
    union all select 'B',   'vnc4.0',                'vnc'  
    union all select 'B',   'mcafee8i',              'mcafee'  
    union all select 'B',   'microsoft',             'microsoft'   
    union all select 'B',   'game3',                 'game3'  declare @b table(id int,  name   nvarchar(20))
    insert @b select 1,    'office'  
    insert @b select 2,    'mcafee'  
    insert @b select 3,    'vnc'  
    insert @b select 4,    'microsoft'
    --或用patindex/charindex select a.* from @a a where not exists(select 1 from @b where  patindex( '%'+Name+'%',a.soft_name)>0 ) id   soft_name            company              
    ---- -------------------- -------------------- 
    A    qq2007               qq
    A    game1                game1
    A    game2                game2
    B    game3                game3
      

  5.   

    declare @a table(id varchar(2),  soft_name  varchar(20) ,          company  varchar(20))
    insert @a select 'A',   'office 2000',           'microsoft'  
    union all select 'A',   'mcafee agent',          'mcafee'  
    union all select 'A',   'vnc33',                 'vnc'  
    union all select 'A',   'qq2007',                'qq'  
    union all select 'A',   'game1',                 'game1'  
    union all select 'A',   'game2',                 'game2'  
    union all select 'B',   'office 2003',           'microsoft'  
    union all select 'B',   'vnc4.0',                'vnc'  
    union all select 'B',   'mcafee8i',              'mcafee'  
    union all select 'B',   'microsoft',             'microsoft'   
    union all select 'B',   'game3',                 'game3'  declare @b table(id int,  name   nvarchar(20))
    insert @b select 1,    'office'  
    insert @b select 2,    'mcafee'  
    insert @b select 3,    'vnc'  
    insert @b select 4,    'microsoft'
    --或用patindex/charindex select a.* from @a a where not exists(select 1 from @b where  a.soft_name like Name+'%' ) 
    id   soft_name            company              
    ---- -------------------- -------------------- 
    A    qq2007               qq
    A    game1                game1
    A    game2                game2
    B    game3                game3(所影响的行数为 4 行)
      

  6.   

    select a.* from @a a where not exists(select 1 from @b where  a.soft_name like '%'+Name+'%' )