我有一个包含158列和22,000行的表,我有另一个空表,我希望根据来自用户的WHERE条件动态插入值。 SELECT查询将如下所示:
SELECT * FROM mygrist_tables WHERE suic_att> = 5 AND gender ='M'
这给了我大约9,000条记录(比方说)。我想将这些记录插入另一个表(只是这个过滤后的数据)。可能吗?任何人都可以让我了解INSERT查询的外观,以及是否需要创建包含所有这些158 cloum的另一个表,或者INSERT查询是否可以动态创建所有这158个列?另外,我可以使用视图执行此操作还是表格必不可少?提前谢谢!
答案 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';
答案 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'