首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL将所有数据插入到桥接表中(多对多)

SQL将所有数据插入到桥接表中(多对多)
EN

Stack Overflow用户
提问于 2018-12-17 06:44:30
回答 2查看 322关注 0票数 0

我有两张表,如下所示;

X表;

代码语言:javascript
复制
+---+----------+
| id| value    |
+---+----------+
| 1 | x value1 |
+---+----------+
| 2 | x value2 |
+---+----------+
| 3 | x value3 |
+---+----------+

Y表;

代码语言:javascript
复制
+---+----------+
| id| value    |
+---+----------+
| 1 | y value1 |
+---+----------+
| 2 | y value2 |
+---+----------+
| 3 | y value3 |
+---+----------+

并且我已经创建了一个新的表(x_y表),它有x和y表的外键;

我想将所有相互关联的数据添加到新表中,如下所示: x_y表

代码语言:javascript
复制
+----+------+------+
| id | x_id | y_id |
+----+------+------+
| 1  | 1    | 1    |
+----+------+------+
| 2  | 1    | 2    |
+----+------+------+
| 3  | 1    | 3    |
+----+------+------+
| 4  | 2    | 1    |
+----+------+------+
| 5  | 2    | 2    |
+----+------+------+
| 6  | 2    | 3    |
+----+------+------+
| 7  | 3    | 1    |
+----+------+------+
| 8  | 3    | 2    |
+----+------+------+
| 9  | 3    | 3    |
+----+------+------+

如何将这样的值添加到postgresql脚本的第三个表中。

EN

回答 2

Stack Overflow用户

发布于 2018-12-17 06:46:17

这可以通过一个cross join和一个生成id的row_number来完成。

代码语言:javascript
复制
select row_number() over(order by x.id,y.id) as id,x.id as x_id,y.id as y_id
from x
cross join y
票数 2
EN

Stack Overflow用户

发布于 2018-12-17 06:58:34

据推测,新表是用id定义为序列列的。如果是这样,您可以通过执行以下操作来插入数据:

代码语言:javascript
复制
insert into x_y (x_id, y_id)
    select x.id, y.id
    from x cross join
         y
    order by x.id, y.id;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53807120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档