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
您可以使用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)