[英]INSERT SELECT sql statement - how to fetch data from two other tables in one statement
初学者 SQL 学生在这里。
我有三张桌子:
在Owns
中,我有两列client number
和account number
,我想将Client
表中的所有客户编号添加到第一列,并将Account
表中的所有帐号添加到第二列。
我怎样才能在一份声明中做到这一点?
看起来像外部连接。
一些示例数据(当然是虚拟表;只有必要的列):
SQL> select * from client;
CLIENT_NUMBER
-------------
1
2
SQL> select * from account;
ACCOUNT_NUMBER
--------------
100
使用利用row_number
分析函数的 CTE,其结果( rn
列)然后用作连接条件,创建这样的语句:
SQL> insert into own (client_number, account_number)
2 select client_number, account_number
3 from (with
4 n_client as
5 (select client_number,
6 row_number() Over (order by client_number) rn
7 from client
8 ),
9 n_account as
10 (select account_number,
11 row_number() over (order by account_number) rn
12 from account
13 )
14 select c.client_number, a.account_number
15 from n_client c left join n_account a on a.rn = c.rn
16 );
2 rows created.
结果是:
SQL> select * From own;
CLIENT_NUMBER ACCOUNT_NUMBER
------------- --------------
1 100
2
SQL>
请注意,如果account
的行数多于client
,则必须切换到右连接(或保持左连接,但替换表的顺序)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.