2

有几个问题涉及通过复制现有行来插入新行。

这个问题建立在它之上,但本质上是不同的。

我有一张有 9000 多行的表。大约有10列。第 1 列是一个自动增量,它是唯一键。

我想通过复制现有行中的所有内容,向表中插入与存在完全相同的行数,显然第 1 列除外,但第 10 列除外,它将根据现有行中第 10 列的值而改变,例如,如果第 10 列在现有行中为 23,则变为 52,如果在现有行中第 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
4

2 回答 2

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

上面的脚本也可以

于 2013-03-09T16:07:09.490 回答
1

是的,这肯定会奏效。

请注意此处找到的第三个INSERT语法示例:

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

参考http ://dev.mysql.com/doc/refman/5.5/en/insert.html

于 2013-03-09T14:10:27.707 回答