问题描述
亲爱的汤姆
很抱歉,如果以前已经解决了这个问题,我是ORACLE SQL的完整初学者,将感谢您的帮助。
我有两个表表A和表B。
表A有大约60,000行客户数据,客户Id作为主标识符。但是,客户id不是唯一的,并且一个客户可能有多个记录。
表B有一列有超过500,000个唯一客户id,这些是唯一id。
我需要的是以下帮助:
从表A中查看客户Id,然后在表B中搜索以查看该客户Id是否存在。如果是这样,则在TableA.Customer_exists列中插入yes (或True),如果不是,则在TableA.Customer_exists中插入No (或False)。这应该遍历表A中的所有条目,即使我在表A中有多个id,tableA-Customer_exists列中也会有多个Y或N
提前谢谢你,一步一步的代码将不胜感激,因为我只是在学习SQL
很抱歉,如果以前已经解决了这个问题,我是ORACLE SQL的完整初学者,将感谢您的帮助。
我有两个表表A和表B。
表A有大约60,000行客户数据,客户Id作为主标识符。但是,客户id不是唯一的,并且一个客户可能有多个记录。
表B有一列有超过500,000个唯一客户id,这些是唯一id。
我需要的是以下帮助:
从表A中查看客户Id,然后在表B中搜索以查看该客户Id是否存在。如果是这样,则在TableA.Customer_exists列中插入yes (或True),如果不是,则在TableA.Customer_exists中插入No (或False)。这应该遍历表A中的所有条目,即使我在表A中有多个id,tableA-Customer_exists列中也会有多个Y或N
提前谢谢你,一步一步的代码将不胜感激,因为我只是在学习SQL
专家解答
合并应该解决大部分问题
SQL> create table ta ( id int, cust int, yes_or_no varchar2(1) );
Table created.
SQL> create table tb ( cust int primary key ) ;
Table created.
SQL>
SQL> insert into ta
2 select rownum, dbms_random.value(1,500000), null
3 from dual
4 connect by level <= 60000;
60000 rows created.
SQL>
SQL> insert into tb
2 select rownum*2
3 from dual
4 connect by level <= 500000;
500000 rows created.
SQL>
SQL> commit;
Commit complete.
SQL>
SQL>
SQL> merge into ta
2 using ( select * from tb ) b
3 on ( ta.cust = b.cust )
4 when matched then
5 update set yes_or_no = 'Y';
30057 rows merged.
SQL>
SQL> update ta set yes_or_no = 'N' where yes_or_no is null;
29943 rows updated.
SQL>
SQL> select * from ta where rownum < 50;
ID CUST Y
---------- ---------- -
2087 179958 Y
2088 275279 N
2089 187087 N
2090 34816 Y
2091 444243 N
2092 468718 Y
2093 325392 Y
2094 397626 Y
2095 253285 N
2096 43035 N
2097 168041 N
2098 216580 Y
2099 76296 Y
2100 281676 Y
2101 173866 Y
2102 91198 Y
2103 322284 Y
2104 290060 Y
2105 315403 N
2106 423184 Y
2107 386996 Y
2108 32697 N
2109 316326 Y
2110 320719 N
2111 438909 N
2112 427618 Y
2113 80531 N
2114 131810 Y
2115 104332 Y
2116 122527 N
2117 330385 N
2118 61493 N
2119 78733 N
2120 17073 N
...
...
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




