2014-01-17 32 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 

等等。