表A
id  name
1    小明
2    小刚
3    小刘
4    小王表B
id  class      nameid
1   打篮球       1,2,3,
2   踢足球       2,3,4,
3   打兵乓球     1,3,4,表B的nameid 与表A的ID对应如何select出会打篮球的人名
 

解决方案 »

  1.   

    select a.* from 表A a,表B b where charindex(','+rtrim(a.id)+',' , ','+b.nameid)>0 and b.[class]='打篮球'
      

  2.   

    DECLARE @TA TABLE([id] INT, [name] NVARCHAR(2))
    INSERT @TA
    SELECT 1, N'小明' UNION ALL 
    SELECT 2, N'小刚' UNION ALL 
    SELECT 3, N'小刘' UNION ALL 
    SELECT 4, N'小王'DECLARE @TB TABLE([id] INT, [class] NVARCHAR(4), [nameid] VARCHAR(6))
    INSERT @TB 
    SELECT 1, N'打篮球', '1,2,3,' UNION ALL 
    SELECT 2, N'踢足球', '2,3,4,' UNION ALL 
    SELECT 3, N'打兵乓球', '1,3,4,'SELECT name 
    FROM @TA AS A, @TB AS B
    WHERE CHARINDEX(','+RTRIM(A.id)+',', ','+nameid)>0
      AND class=N'打篮球'
    /*
    name
    ----
    小明
    小刚
    小刘
    */
      

  3.   

    if object_id('[a]') is not null drop table [a] 
     go 
    create table [a]([id] int,[name] varchar(10))
    insert [a] select 1,'小明'
    union all select 2,'小刚'
    union all select 3,'小刘'
    union all select 4,'小王'if object_id('[b]') is not null drop table [b] 
     go 
    create table [b]([id] int,[class] varchar(10),[nameid] varchar(10))
    insert [b] select 1,'打篮球','1,2,3,'
    union all select 2,'踢足球','2,3,4,'
    union all select 3,'打兵乓球','1,3,4,'select name from a where charindex(ltrim(id)+',',(select nameid from b where class ='打篮球'))>0
    /*
    name
    ----------
    小明
    小刚
    小刘(3 行受影响)
    */
      

  4.   

    select name as n from 表A where id=(select nameid from 表B where class='打篮球')
      

  5.   


    SELECT 

    FROM A 
    WHERE EXISTS(SELECT * FROM B WHERE CHARIDENX(','+CONVERT(VARCHAR,A.ID)+',',','+B.NAMEID+',')>0)
      

  6.   

    晕 ,忘记用charindex了 
    改正下select name from a where charindex(ltrim(id)+',',(select nameid from b where class ='打篮球'))>0
      

  7.   

    SELECT 

    FROM A 
    WHERE EXISTS(SELECT * FROM B WHERE CHARINDEX(','+CONVERT(VARCHAR,A.ID)+',',','+B.NAMEID+',')>0)
      

  8.   

    select name as n from 表A where id=(select nameid from 表B where class='打篮球')[
      

  9.   


    SELECT 

    FROM A 
    WHERE EXISTS(SELECT * FROM B WHERE CHARIDENX(','+CONVERT(VARCHAR,A.ID)+',',','+B.NAMEID+',')>0)
    AND B.[CLASS]='打篮球'老出错,忘条件了!