5

我必须在表中插入大量记录。它没有完全标准化,因此大部分字段都是重复的。

我知道正确的命令是:

INSERT INTO table_name (field1, field2, ..., field_n) 
VALUES (value1, value2, ..., value_n),
    ...
    (value1, value2, ..., value_n)

但我想知道是否可以保持某些值固定并仅指示不同的值。

让我们说而不是

INSERT INTO table_name (shop, month, sale)
VALUES (1, 2, 23),
    (1, 2, 28),
    (1, 2, 29),
    (1, 2, 30)

有类似的东西

INSERT INTO table_name (shop, month, sale)
VALUES (1, 2, 23), ... 28 / 29 / 30

如果不可能,我会创建一个带有循环、输入字符串等的过程。这不是一个大问题,但我的意思是要知道 INSERT INTO 是否有任何特殊性允许在没有过程的情况下执行此操作。

4

3 回答 3

3

您可以尝试以下方法:

INSERT INTO table_name (shop, month, sale)
SELECT * FROM
(SELECT 1 as shop, 2 as month) as sm,
(SELECT 23 as sale UNION ALL SELECT 28 UNION ALL SELECT 30) as sales;
于 2013-02-05T13:01:09.013 回答
1

您可以使用默认约束,当您未在 insert into 语句中指定默认值时,该约束将添加默认值。如果您指定一个值,该值将被添加。

只需为表格中的列设置默认值

ALTER TABLE tblname ALTER columnName SET DEFAULT 'value'

参考http://www.w3schools.com/sql/sql_default.asp

于 2013-02-05T11:31:44.277 回答
1

您可以使用临时表插入不同的值,然后使用 insert ... select。我不知道这是否会为你节省一大笔钱:

CREATE TEMPORARY TABLE sale_temp (sale int);
INSERT sale_temp (sale) VALUES (23), (28), (29), (30);
INSERT INTO table_name (shop, month, sale)
SELECT 1, 2, sale
  FROM sale_temp;
DROP TABLE sale_temp;
于 2013-02-05T11:48:05.503 回答