2013-03-09 32 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 

上述腳本也將工作

相關問題