有一些问题涉及通过复制现有行来插入新行。
这个问题建立在它的基础上,但却大不相同。
我有一张9000+行的表格。大约有10列。第1列是自动增量,它是唯一键。
我想通过复制现有行中的所有内容来向表中插入完全相同的行数,除了明显的第1列,但除了第10列之外,它将根据现有行中第10列的值进行更改,例如:如果col 10在现有行中为23,则它变为52,如果col 10在现有行中为25则变为53.
所以基本上现有行和新行之间的唯一区别是col 10值(除了唯一ID)。 col 10将采用非常有限的数值。
这样的事情会起作用吗?
INSERT INTO mycooltable (col2, col3, col4, col5, col6, col7, col8, col9, col10)
SELECT col2, col3, col4, col5, col6, col7, col8, col9, 52
FROM mycooltable WHERE col10 = 23
INSERT INTO mycooltable (col2, col3, col4, col5, col6, col7, col8, col9, col10)
SELECT col2, col3, col4, col5, col6, col7, col8, col9, 53
FROM mycooltable WHERE col10 = 25
答案 0 :(得分:1)
是的,这肯定有用。
请注意此处的INSERT
语法的第三个示例:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
答案 1 :(得分:1)
INSERT INTO mycooltable (col2, col3, col4, col5, col6, col7, col8, col9, col10)
SELECT col2, col3, col4, col5, col6, col7, col8, col9
,NewCol10= Case
`When Col10=23 then 52
`When Col10=25 then 53
`Else 55 --some default
End
FROM mycooltable
以上脚本也可以使用