2014-01-17 31 views
0

我有2個包含許多列的表。比如我的表:Mysql SELECT - 如何選擇一列作爲'UNSELECTED'列?

table1 
_______________________________________________ 
| a | b | c | d | e | f | g | h | i | ... | z | 
----------------------------------------------- 
table2 
_______________________________________________ 
| a | b | c | d | e | f | g | h | i | ... | z | 
----------------------------------------------- 

而現在,我想複製或從表1中插入一條記錄表2。這是我的查詢:

INSERT INTO table2 
SELECT table1.* FROM table1 
WHERE table1.b = '1' 

我不覺得在查詢中的任何錯誤,但我想要的是從表1中的列'a'到表2之間的所有列插入記錄。
我可以通過這個查詢做到這一點:

INSERT INTO table2 (b,c,d,...) // it takes a long line 
SELECT table1.b,table1.c,table1.d,... FROM table1 // it takes a long line 
WHERE table1.b = '1' 

但是,這不是一個有效的查詢行,因爲我只是不選擇1列。
有沒有什麼有效的方法?

+2

SQL中沒有「select all but」功能。你可以選擇*,或者列出你想要的字段。 –

+0

Oohh god ... O.o –

+1

解決方法:讓table1中的table1中的所有列都執行select *,然後更改table1並刪除不需要的列。這是醜陋的/冒險的,但對於不想輸入字段名稱的懶惰類型來說很好。 –

回答

0

您可以嘗試使用create like語句複製表,然後更改它以刪除不想要的列,並使用該新表執行插入操作。然後放下新的表格。 (或使用臨時表)

CREATE TABLE table3 LIKE table1 

ALTER TABLE table3 DROP COLUMN x 

INSERT INTO table2 
SELECT * FROM table3 

DROP TABLE table3 

等等。