繁体   English   中英

INSERT SELECT sql 语句 - 如何在一个语句中从另外两个表中获取数据

[英]INSERT SELECT sql statement - how to fetch data from two other tables in one statement

初学者 SQL 学生在这里。

我有三张桌子:

  1. 客户
  2. 帐户
  3. 拥有

Owns中,我有两列client numberaccount 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM