使用INSERT查询将行从一个表复制到另一个表

时间:2013-03-27 00:13:32

标签: mysql select insert records

我有一个包含158列和22,000行的表,我有另一个空表,我希望根据来自用户的WHERE条件动态插入值。 SELECT查询将如下所示:

SELECT * FROM mygrist_tables WHERE suic_att> = 5 AND gender ='M'

这给了我大约9,000条记录(比方说)。我想将这些记录插入另一个表(只是这个过滤后的数据)。可能吗?任何人都可以让我了解INSERT查询的外观,以及是否需要创建包含所有这些158 cloum的另一个表,或者INSERT查询是否可以动态创建所有这158个列?另外,我可以使用视图执行此操作还是表格必不可少?提前谢谢!

2 个答案:

答案 0 :(得分:24)

听起来您希望将上述SELECT语句和INSERT结果运行到一个不存在的新表中。如果是这样,这应该有效:

SELECT * INTO YourNewTable
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M'

假设YourNewTable已经存在,那么你需要运行INSERT INTO:

INSERT INTO YourNewTable 
SELECT * 
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M'

您可能需要指定列中的列不相同。

编辑 - 重读评论并实现DB是MySQL,要从SQL语句创建新表,您应该使用:

CREATE TABLE YourNewTable
SELECT *
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M';

http://dev.mysql.com/doc/refman/5.0/en/create-table.html

答案 1 :(得分:4)

您可以使用SELECT INTO语法

SELECT * 
INTO MyNewTable
FROM mygrist_tables WHERE suic_att>=5 AND gender='M'

但是你将无法插入已经存在的表格。如果您的表已存在,则使用

INSERT INTO MyOldTable
([LIST OUT YOUR COLUMNS HERE])
SELECT [LIST OUT YOUR COLUMNS HERE] 
FROM mygrist_tables WHERE suic_att>=5 AND gender='M'