2张表user和maillist
user 表结构   
userid    name   mobile  
00101     张三    1391111111111
00102     李四    1392222222222
00103     李飞    1399999999999
00111     王淼    1392212222222
00112     张萌    1392222323232maillist表结构mail_id   received_id(接收人ID)      content(邮件主题)
0001       00101;00102;00103;00111          测试
0002       00103;00112                      测试2请问这2张表  用什么语句查询后能获取下面的数据  mobile              name   content
1391111111111       张三    测试
1392222222222       李四    测试
1399999999999       李飞    测试
1392212222222       王淼    测试
1392212222222       王淼    测试2
1392222323232       张萌   测试2谢谢啦   我找了好多资料都找不到  如何用SQL语言来实现
 

解决方案 »

  1.   

    select user.mobile, user.name,(select max(content) from maillist where instr(received_id,user.userid) > 0 ) as content
    from user
      

  2.   

    select a.mobile,a.name,b.content from user a,maillist b where b.received like '%'|a.userid|'%' order by a.name
      

  3.   

    SQL> WITH A  AS (SELECT '00101' USERID,'張三' NAME,'1391111111111' MOBILE FROM DUAL
      2              UNION
      3              SELECT '00102' USERID,'李四' NAME,'1392222222222' MOBILE FROM DUAL
      4              UNION
      5              SELECT '00103' USERID,'李飛' NAME,'1399999999999' MOBILE FROM DUAL
      6              UNION
      7              SELECT '00111' USERID,'王淼' NAME,'1392212222222' MOBILE FROM DUAL
      8              UNION
      9              SELECT '00112' USERID,'張萌' NAME,'1392222323232' MOBILE FROM DUAL
     10              ),
     11         B AS (SELECT '0001' MAIL_ID,'00101;00102;00103;00111' received_id,'測試' content FROM DUAL
     12                UNION
     13                SELECT '0002' MAIL_ID,'00103;00112' received_id,'測試2' content FROM DUAL
     14               )
     15  SELECT * FROM (select A.MOBILE,A.NAME,CASE WHEN INSTR(B.RECEIVED_ID,A.USERID)>0
     16                                   THEN B.CONTENT END CONTENT
     17  FROM A,B )
     18  WHERE NVL(CONTENT,' ')<>' '
     19  /
     
    MOBILE        NAME CONTENT
    ------------- ---- -------
    1391111111111 張三 測試
    1392222222222 李四 測試
    1399999999999 李飛 測試
    1392212222222 王淼 測試
    1399999999999 李飛 測試2
    1392222323232 張萌 測試2
     
    6 rows selected
     
      

  4.   

    select a.mobile,a.name,b.content from  a, b 
    where INSTR(b.received_ID,A.USERID)>0
    order by a.name  
      

  5.   

    select a.name,a.mobile,b.content from myuser a,mymaillist b where b.received_id like '%'||a.userid||'%' order by a.userid;
    经过测试,绝对可用 
      

  6.   

    select user.mobile, user.name, maillist.content as content 
    from user
    inner join maillist on 
      instr(received_id,user.userid) > 0
      

  7.   

    利用ORACLE的正则表达式
    select m.mobile,m.name,l.content 
    from  user m ,maillist l 
    where regexp_like(l.received_id,m.userid)
      

  8.   

    select a.mobile,a.name,b.content from  a, b 
    where INSTR(b.received_ID,A.USERID)>0
    order by a.name  
    测试过了行的
      

  9.   

    select a.mobile,a.name,b.content from  a, b 
    where INSTR(b.received_ID,A.USERID)>0
    order by a.name  
    不提倡用like和正则,那个太慢了。
      

  10.   


    3楼的能给兄弟解释下您的SQL语句(还有您的第2种查询方法)的详细说明吗?  多谢了!~
      

  11.   

    select u.mobile,u.name,m.content 
    from user u,maillist m
    where contains(to_char(m.received_id), to_char(u.userid))
    试试这个!