2012-04-23 100 views
0

問題:

是否有可能在兩個或多個現有表格中創建一個表格?從兩個或多個現有表格創建一個新表格(MySQL)

詳情:

我可以創建一個表像這樣:

CREATE TABLE IF NOT EXISTS USERNAME (AGE INT NOT NULL) 
CREATE TABLE IF NOT EXISTS USERAGE (NAME VARCHAR(100) NOT NULL) 
CREATE TABLE IF NOT EXISTS USER LIKE USERNAME LIKE USERAGE; 

我不能讓的Reference Manual正面或反面:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name 
{ LIKE old_tbl_name | (LIKE old_tbl_name) } 

是否尾隨(LIKE old_tbl_name)意味着1或更多出現LIKE old_tbl_name

如果可能,那麼同名列或兩個主ID會發生什麼?

編輯:我想利用現有的表的模式來定義一個新表,試圖填充一個新表與現有表的內容。

+0

你只是試圖使用現有表的模式來定義新表,或者是否希望用現有表的內容填充新表?對於後者,可以使用MySQL的['CREATE TABLE ... SELECT'](http://dev.mysql.com/doc/refman/5.6/en/create-table-select.html)語法。您提到的CREATE TABLE ... LIKE語法將複製現有表的模式而不包含其任何數據,但您只能指定一個這樣的舊錶(您引用的括號中的尾隨版本僅允許可選的括號放在'LIKE'子句的周圍)。 – eggyal 2012-04-23 09:52:26

+0

@eggyal我向你澄清了這個問題。 – puk 2012-04-23 09:54:47

回答

4

如何:

CREATE TABLE IF NOT EXISTS USER SELECT * FROM USERNAME, USERAGE WHERE FALSE; 

可以進一步的SELECT關鍵字之前,指定新表中需要任何索引或重命名列/選擇上的SELECT右側某個子集和往常一樣:

CREATE TABLE IF NOT EXISTS USER (PRIMARY KEY(UNAME)) SELECT NAME AS UNAME -- etc 

如果要合併所有同名的列,只需在SELECT中使用NATURAL JOIN即可。

查看CREATE TABLE ... SELECT瞭解更多信息。

+0

所以這基本上從多個表中複製一組空行? – puk 2012-04-23 10:02:54

+0

是的,但它將使用結果(空)記錄集中的列名和數據類型。 – eggyal 2012-04-23 10:03:28

+0

夠好。謝謝 – puk 2012-04-23 10:13:19

相關問題