2010-07-18 25 views
1

我有2個表,每個都有一個標識列。我想要做的是用這些身份填充一個新的2列表格,以便它能夠識別身份。如何使用來自2個不同來源的無關數據填充2列表格?

現在,我完全能夠使用其中一個表的身份填充我的新表的一列,但無法從另一個表中獲取身份到我的新表中。如果這不是最好的第一步,請讓我知道。

謝謝

+0

你怎麼想 '配對身份'?您是否想要在其他屬性上加入這兩個表格,例如城市名稱/州。 – 2010-07-18 23:12:24

+3

對不起 - 剛剛重讀 - 你爲什麼要將兩個_unrelated_數據表的身份放在一張表中? – 2010-07-18 23:13:47

+0

是的,我也想知道。我認爲這不可能或有用,除非你可以定義它們之間的關係。 – 2010-07-18 23:16:09

回答

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) 
+0

太棒了。是的,它看起來像我只是有一些類型的關係。正如你在上面所說明的那樣,通過創建兩個表格,每個表格有兩列,然後我可以創建一個「假」關係並同時將它們同時帶入。非常感謝! – gorndor 2010-07-18 23:30:21

1

您可以填充一個表與INSERT...SELECT語法和SELECT可以是兩個(或多個)表之間的連接的結果。

INSERT INTO NewTable (col1, col2) 
    SELECT a.col1, b.col2 
    FROM a JOIN b ON ...conditions...; 

所以,如果你可以表達配對作爲SELECT,你可以將其插入到你的表。

如果這兩個表是不相關的並且沒有辦法表示配對,那麼您問的是如何創建非關係數據存儲,並且沒有關係規則。

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 
相關問題