插入多行,其中大多数是常量

时间:2013-02-05 11:24:19

标签: mysql insert

我必须在表格中插入大量记录。它没有完全正常化,因此大多数字段都会重复。

我知道正确的命令是:

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是否有任何特殊性允许在没有程序的情况下执行此操作。

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

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

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

即可
ALTER TABLE tblname ALTER columnName SET DEFAULT 'value'

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

答案 2 :(得分: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;