我有2个表,每个表都有一个标识列。我想要做的是填充一个带有这些身份的新的2列表,以便它导致身份的配对。
现在,我完全可以使用其中一个表中的标识填充新表的一列,但无法将另一个表中的标识放入我的新表中。如果这不是最好的第一步,请告诉我。
谢谢
答案 0 :(得分:2)
您可能想尝试以下内容:
INSERT INTO t3 (id, value_1, value_2)
SELECT t1.id, t1.value, t2.value
FROM t1
JOIN t2 ON (t2.id = t1.id);
测试用例(MySQL):
CREATE TABLE t1 (id int, value int);
CREATE TABLE t2 (id int, value int);
CREATE TABLE t3 (id int, value_1 int, value_2 int);
INSERT INTO t1 VALUES (1, 100);
INSERT INTO t1 VALUES (2, 200);
INSERT INTO t1 VALUES (3, 300);
INSERT INTO t2 VALUES (1, 10);
INSERT INTO t2 VALUES (2, 20);
INSERT INTO t2 VALUES (3, 30);
结果:
SELECT * FROM t3;
+------+---------+---------+
| id | value_1 | value_2 |
+------+---------+---------+
| 1 | 100 | 10 |
| 2 | 200 | 20 |
| 3 | 300 | 30 |
+------+---------+---------+
3 rows in set (0.00 sec)
答案 1 :(得分:1)
您可以使用INSERT...SELECT
语法填充表格,SELECT
可以是两个(或更多)表格之间的联接结果。
INSERT INTO NewTable (col1, col2)
SELECT a.col1, b.col2
FROM a JOIN b ON ...conditions...;
因此,如果您可以将配对表达为SELECT
,则可以将其插入表格中。
如果两个表无关并且无法表达配对,那么您就会问如何创建非关系数据存储,并且没有关系规则。< / p>
答案 2 :(得分:0)
一个选项是为每个作为唯一标识符的列创建一个计数器,然后加入计数器。
对于SQL Server,这将起作用:
SELECT one.column1, two.column2
FROM (SELECT RANK() OVER (ORDER BY column1) AS id,
column1
FROM table1) one
LEFT JOIN (SELECT RANK() OVER (ORDER BY column2) AS id,
column2
FROM table2) two ON one.id = two.id