有两个表表A
id class
1   a
2   b
3   d表B
id name class
1  abc  a,b两个表的关系是:在表A存好分类(class)  ; 表B的class字段存储所属表A的分类名(class),多个间用","号隔开要实现的功能是, 查询出表A的class数据,条件是不包含表B已经有的class(比如表B第一行有a,b  就查询出一个d出来)select * from 表A where ...下面就要请教大家了

解决方案 »

  1.   


    --> 我的淘宝:《戒色坊》http://shop36766744.taobao.com/if object_id('[TA]') is not null drop table [TA]
    create table [TA]([id] int,[class] varchar(1))
    insert [TA]
    select 1,'a' union all
    select 2,'b' union all
    select 3,'d'
    if object_id('[TB]') is not null drop table [TB]
    create table [TB]([id] int,[name] varchar(3),[class] varchar(3))
    insert [TB]
    select 1,'abc','a,b'select A.* from [TA] A,TB B where charindex(','+A.class+',',','+B.class+',')=0/*id          class 
    ----------- ----- 
    3           d(所影响的行数为 1 行)*/drop table TA,[TB]
      

  2.   

    我觉得你这样设计表就不对!这样设计不是考研程序员sql语句的能力么??
    按我的习惯我会再设计一个关联表!形成:
    表A 
    id class 
    1  a 
    2  b 
    3  d 表B 
    id name 
    1  abc  表C 
    id nameId classId 
    1  1       1
    2  1       2
    3  3       2
    4  2       1select class from A where id out(select classid from C ) 这样d 就出来了~~ 虽然有点冗余!但是查询方便很多了~~  好了期待其他大大的指点~~
      

  3.   

    如果数据量不大,我这里有一个笨招:
    我用到了ORACLE的一个方法:INSTR()判断字符是否存在于字符串。
    查询条件是:逐条判断A表中CLASS字段的值,如果不存在于B表的CLASS字段的值中则查询出来,最后UNION起来。
    带背景色的地方注意传值,对B表是指定行ID,对A表是全遍历。
    SELECT * FROM A 
     WHERE INSTR((SELECT CLASS FROM B WHERE ID='1'),
                  (SELECT CLASS FROM A WHERE ID1='1')) = 0
       AND ID='1'
    UNION
    SELECT * FROM A 
     WHERE INSTR((SELECT CLASS FROM B WHERE ID='1'),
                  (SELECT CLASS FROM A WHERE ID1='2')) = 0
       AND ID='2'
    UNION
    SELECT * FROM A 
     WHERE INSTR((SELECT CLASS FROM B WHERE ID='1'),
                  (SELECT CLASS FROM A WHERE ID1='3')) = 0
       AND ID='3'
      

  4.   

    上一个太麻烦,用这个SELECT * FROM A T1 
    WHERE NOT EXISTS (SELECT 1 FROM B T2
                              WHERE INSTR(T2.CLASS,T1.CLASS)>0);
      

  5.   

    怪异噢、、、
    如果B表里不只一条数据如何处理、、、
    楼主的问题感觉有点模糊,就像如果B表里的有多条数据的话,那A是1对N呢还是1对1呢,关联又是什么、、、