12

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

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

这给了我大约 9,000 条记录(比如说)。我想将这些记录插入另一个表(只是这个过滤数据)。可能吗?谁能告诉我 INSERT 查询的外观以及我是否需要使用所有这 158 个 cloumns 创建另一个表,或者 INSERT 查询是否可以动态创建所有这 158 个列?另外,我可以使用视图来执行此操作,还是必须使用表格?提前致谢!

4

2 回答 2

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

于 2013-03-27T00:20:26.380 回答
5

您可以使用 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'
于 2013-03-27T00:21:00.783 回答