LENDIEN聯電 冷暖 清淨 除溼 移動式空調 9000BTU任天堂-Switch-NS-公司貨主機-豪華全配組LG樂金 WIFI遠控雙眼小精靈掃地清潔機器人變頻版

2009年8月5日 星期三

MySQL複製一筆資料

這個說起來很簡單,真的做起來其實也很簡單,但因為不常用,應該有不少人用起來很生疏吧!

語法其實很簡單
INSERT INTO tablename [VALUES (fields...)]
SELECT fields FROM tablename [WHERE ...]

我想這個在使用上最容易遇到的問題,就是主索引跟唯一值不能重複的問題了。
在最單純的狀況下,要把tableA的一筆資料複製,只要下

INSERT INTO
tableA
SELECT * FROM tableA WHERE id=3

就行了。不過呢,如果遇到鍵值不能重複的話,就要在設定VALUES裡設定欄位,當然相對的在後面的SELECT裡,也要指定一樣的欄位。

這樣如果某個表欄位很多,又要避掉索引值的話,其實光用想的我就累了……應該有方法可以處理掉欄位的問題,但那是個懶方法,卻不一定是個好方法,在目前還沒遇到那麼棘手的問題前,還是勤勞的慢慢key欄位名稱好了~

這個方式也是可以用在Oracle跟MSSQL裡的,其他的資料庫因為手邊沒得測,就不知曉了。

1 則留言:

  1. 經測試,我的語法才可以

    複製一份資料錄,跳開SN(不重覆值)

    insert into Basic(Name,CP_Name ,Department ,Titles ,Cp_Tel ,Cp_Phone ,PostalCode ,Addr ,CP_Email ,trade ,mbcount ,Join_time ,wave)
    select Name,CP_Name ,Department ,Titles ,Cp_Tel ,Cp_Phone ,PostalCode ,Addr ,CP_Email ,trade ,mbcount ,Join_time ,wave from Basic where sn='13'

    作者:阿宏(mitnick)

    回覆刪除