2013-03-09 76 views
2

有几个问题涉及通过复制现有行插入新行。通过复制现有行将新行插入到表中

这个问题建立在它上面,但是有很大的不同。

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

我想通过复制现有行中的所有行(除了明显是列1以外),但除了将根据现有行中第10列的值更改的列10之外,例如如果col 10在现有行中为23,则它变为52,如果col 10在现有行中为25,则它变成53.

因此,基本上现有行和新行之间的唯一区别是col 10值(除了唯一ID) 。第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

是的,这样的事情会工作。 – Mischa 2013-03-09 14:09:55

回答

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

0

是的,你的SQL工程;但我非常怀疑这个解决方案是否真的适合您的业务问题。你可以分享你正在寻求解决的业务问题,让这里的成员与你一起审核吗?

+0

我不是要编写程序或创建标准化的东西。更多拼凑 - 运行SQL来解决手头的问题。问题是这样的:我们运行一个开源的电子商务脚本。该脚本提供不同的客户群,并允许产品为不同的客户群提供不同的数量折扣。数量折扣存储在一个单独的表格中。我有3个客户群体,其中2个实际获得数量折扣。现在我想添加2个客户群,这两个客户群都会获得数量折扣。这些与已经获得折扣的两组相似 – OC2PS 2013-03-09 15:17:42

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 

上述脚本也将工作

相关问题