我在MySQL上有一个名为rent的表
id, int (5), autoincrement PRIMARY KEY
dNo, int (5)
pRent, varchar (5)
status, varchar (10)
我需要在此表中插入300行
id和dNo需要匹配
所以最后我们将id / dNo提升到300.如何做到这一点?
pRent的默认值为0
状态将具有空置的默认值
我应该使用什么SQL查询一次插入所有300行,id / dNo自动增量最多为300?
答案 0 :(得分:1)
假设id设置为auto increment
,您只需插入该批次,然后执行update table set dNo=id
我不确定您是否可以在插入期间设置dNo=id
,因为ID为NULL
您可以将dNo
默认值设置为id
修改:
INSERT INTO `test` (`id`, `id2`) VALUES ('2', `id`)
工作正常,但如果我设置id=NULL
则不行。
您似乎必须使用triggers
CREATE TRIGGER set_nDo AFTER INSERT ON test FOR EACH ROW SET `nDo`=`id`
答案 1 :(得分:0)
好点“JV”。 但他也可以设置一个默认值,并在之后执行UPDATE,这样他就可以使用“id”处的自动增量值。
答案 2 :(得分:0)
我找到了插入1000的好方法
INSERT INTO
myTable
(
nr
)
SELECT
SEQ.SeqValue
FROM
(
SELECT
(HUNDREDS.SeqValue + TENS.SeqValue + ONES.SeqValue) SeqValue
FROM
(
SELECT 0 SeqValue
UNION ALL
SELECT 1 SeqValue
UNION ALL
SELECT 2 SeqValue
UNION ALL
SELECT 3 SeqValue
UNION ALL
SELECT 4 SeqValue
UNION ALL
SELECT 5 SeqValue
UNION ALL
SELECT 6 SeqValue
UNION ALL
SELECT 7 SeqValue
UNION ALL
SELECT 8 SeqValue
UNION ALL
SELECT 9 SeqValue
) ONES
CROSS JOIN
(
SELECT 0 SeqValue
UNION ALL
SELECT 10 SeqValue
UNION ALL
SELECT 20 SeqValue
UNION ALL
SELECT 30 SeqValue
UNION ALL
SELECT 40 SeqValue
UNION ALL
SELECT 50 SeqValue
UNION ALL
SELECT 60 SeqValue
UNION ALL
SELECT 70 SeqValue
UNION ALL
SELECT 80 SeqValue
UNION ALL
SELECT 90 SeqValue
) TENS
CROSS JOIN
(
SELECT 0 SeqValue
UNION ALL
SELECT 100 SeqValue
UNION ALL
SELECT 200 SeqValue
UNION ALL
SELECT 300 SeqValue
UNION ALL
SELECT 400 SeqValue
UNION ALL
SELECT 500 SeqValue
UNION ALL
SELECT 600 SeqValue
UNION ALL
SELECT 700 SeqValue
UNION ALL
SELECT 800 SeqValue
UNION ALL
SELECT 900 SeqValue
) HUNDREDS
) SEQ
答案 3 :(得分:0)
300条记录不是很多,但根据您拥有数据的格式,您可以使用LOAD DATA