很有意思的一個語法, 不過可要小心使用, 在 mysql 5.0 版起, 可以在 insert 時, 指定若重覆 unique key 時, 則使用 update 語法, 這個有點像是在新增資料時, 若不存在則新增, 存在則 update 的方式.
來個例子:
CREATE TABLE `t3` ( `sid` INT NOT NULL , `v1` INT NOT NULL , `v2` INT NOT NULL , `v3` INT NOT NULL , PRIMARY KEY ( `sid` ) ) insert into t3 values (1,1,1,1) insert into t3 values (2,2,2,2) insert into t3 values (2,2,2,2) on duplicate key update v1=v1+1
這時候, 會有一筆, 1,1,1,1 和 2,3,2,2 的資料產生, 如此一來, 可以在重覆 unique key 時, 用來做為更新的條件, 由於 unique key 只會出現一次在對應 table 上, 所以可以用來做為更新的條件值, 而 primary key 也是 unique key, 所以發生在 primary key 時是一樣的狀況.
不過若是新增的資料, 發生多筆 unique key 重覆時(指不同欄位), 該 update 會只更新一筆, 這是在程式上要避免發生的, 以免有資料更新錯誤的問題. 詳情可以參考官方網站資料: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
這種有趣的語法, 其實用的機會不是太多, 不過多學習了解很有意思.
按下上面的中曆轉西曆後, 就會產生如下畫面:
得到: 東漢光武帝建武年間 西元25年7月15日(星期日) ~ 56年5月3日(星期一)
但在 Firefox 6 下, 這個功能不見了:
雖然有快速鍵 Ctrl+U 可以快速叫出來, 不過還是得來找看看到底跑到哪裡去了, 原來是放到”工具” 下的 “網頁開發者” 下的 “頁面原始碼”, 如下圖:


而且還有區分年級的方式整理, 讓小朋友也能找到適合的教材, 點下”依年級區分教學主題:
有區分為國小, 國中, 高中, 大學幾個分類, 來點個國小的看看吧, 選了裡面的”繩波”:
繩波的連結: