2013-10-29 74 views
0

大概這是愚蠢的,但我試圖通過將兩個現有表都添加到product_ID作爲主要和唯一的表中創建一個新表。使用基於唯一ID列的兩個現有表創建一個新表

我試過,但沒有奏效

CREATE TABLE new_table_name 
SELECT * 
FROM table1 t1, table2 t2, WHERE t1.product_id = t2.product_id; 

CREATE TABLE new_table_name 
SELECT * 
FROM table1 AS t1, table2 AS t2, WHERE t1.product_id = t2.product_id; 
+0

您將無法使用*,即您將列出所有列。 – muhmud

+0

,原因是您在兩個表中都有相同名稱的列,例如product_Id,系統不知道要調用第二個product_ID表。 – xQbert

回答

2

我猜的語法時纔是錯誤的可能是你應該嘗試這種

CREATE TABLE new_table 
AS (SELECT * FROM old_table); 


CREATE TABLE NEW_TABLE 
AS 
    (SELECT * 
FROM table1 AS t1, table2 AS t2, WHERE t1.product_id = t2.product_id); 
+0

我試着列出列,但不工作 'CREATE TABLE new_table_name SELECT的product_id,名稱,股票 FROM表1爲T1,表2爲T2,其中t1.product_id = t2.product_id;' 股票是從第二張表,t2 上述兩種語法都不起作用。 我在WHERE附近得到語法錯誤。 將繼續嘗試 –

1

請確保您有AS和,在新表中的列名都是唯一的列名 - 示例:

CREATE TABLE T1 (ID INT, TXT VARCHAR(20)); 
CREATE TABLE T2 (ID INT); 
INSERT INTO T1 VALUES (1, '1111'); 
INSERT INTO T1 VALUES (3, '3333'); 
INSERT INTO T2 VALUES (3); 
CREATE TABLE T3 AS (SELECT A.ID, A.TXT, B.ID AS "NewNameForID" FROM T1 A, T2 B WHERE A.ID=B.ID) 

請注意,此處使用AS重命名B.ID以使生成的表中的所有列名都是唯一的。

生成的表T3將是一個包含列ID:TXT,NewNameForID和1行的表。

請適應您的餐桌。

+0

謝謝, 它的工作! –

相關問題