我这有两个表,
人员性信息表
name  bookId   
小强   1,2,4
小明   1,4
成龙    2
周星星  1,2,5书信息表bookId  bookName
1         java
2         sql
3         ora
4         php
5         jsp现在要求是根据 bookName的名称,模糊查询出人员姓名,(如:bookName=java)应该查出, 小强,小明,和周星星,请问个位用SQL语句怎么过实现?

解决方案 »

  1.   


    WITH c AS (SELECT b.bookid bookid FROM shu b WHERE bookname='java')
    SELECT a.NAME FROM jieshu a,c WHERE INSTR(a.bookid,c.bookid)>0;
      

  2.   

    select a.name 
    from tableA a,book b
    where b.book_name='java' and a.bookId like '%'||to_char(b.book_id)||'%'
      

  3.   

    select u.name from 人员信息表 u where (select b.bookId where b.bookName like %java%) in u.bookId;
      

  4.   

    select u.name from 人员信息表 u where (select b.bookId from 书信息表 b where b.bookName like %java%) in u.bookId; 
     
      

  5.   

    SELECT P.NAME 
    FROM 人员信息表 P,书信息表 B 
    WHERE 书名 = 'java' AND instr(P.ID,B.ID) > 0;
      

  6.   

    select u.name from user u where (select b.bookId from book b where b.bookName like %java%) in u.bookId;
      

  7.   


    SQL> with person as (
      2       select '小强' name,'1,2,4' bookid from dual union all
      3       select '小明','1,4' from dual union all
      4       select '成龙','2' from dual union all
      5       select '周星星','1,2,5' from dual
      6  ), book as(
      7     select '1' bookid,'java' bookname from dual union all
      8     select '2','sql' from dual union all
      9     select '3','ora' from dual union all
     10     select '4','php' from dual union all
     11     select '5','jsp' from dual)
     12  select b.bookname,wm_concat(p.name)
     13  from person p,book b
     14  where instr(p.bookid,b.bookid)>0
     15  group by b.bookname
     16  /
     
    BOOKNAME WM_CONCAT(P.NAME)
    -------- --------------------------------------------------------------------------------
    java     小强,小明,周星星
    jsp      周星星
    php      小强,小明
    sql      小强,成龙,周星星
      

  8.   

    用instr还要注意一点,如果数据多余十行,判断时需要加上分隔符","
    bookId bookName
    1 java
    2 sql
    3 ora
    4 php
    5 jsp
    ...
    10 .net
    11 mysql如: instr(','||人员信息表.bookId||',',','|| 书信息表.bookId||',')>0