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

Sha*_*man 12 mysql select records insert

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

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

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

sge*_*des 24

听起来您想要将上述SELECT语句和INSERT结果运行到一个不存在的新表中.如果是这样,这应该工作:

SELECT * INTO YourNewTable
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M'
Run Code Online (Sandbox Code Playgroud)

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

INSERT INTO YourNewTable 
SELECT * 
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M'
Run Code Online (Sandbox Code Playgroud)

或者,您可能需要指定它们不相同的列.

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

CREATE TABLE YourNewTable
SELECT *
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M';
Run Code Online (Sandbox Code Playgroud)

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


rbe*_*ger 5

您可以使用SELECT INTO语法

SELECT * 
INTO MyNewTable
FROM mygrist_tables WHERE suic_att>=5 AND gender='M'
Run Code Online (Sandbox Code Playgroud)

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

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