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语言来实现
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语言来实现
from user
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
where INSTR(b.received_ID,A.USERID)>0
order by a.name
经过测试,绝对可用
from user
inner join maillist on
instr(received_id,user.userid) > 0
select m.mobile,m.name,l.content
from user m ,maillist l
where regexp_like(l.received_id,m.userid)
where INSTR(b.received_ID,A.USERID)>0
order by a.name
测试过了行的
where INSTR(b.received_ID,A.USERID)>0
order by a.name
不提倡用like和正则,那个太慢了。
3楼的能给兄弟解释下您的SQL语句(还有您的第2种查询方法)的详细说明吗? 多谢了!~
from user u,maillist m
where contains(to_char(m.received_id), to_char(u.userid))
试试这个!