2012-02-04 60 views
0

我正在構建一個與jsfiddle.net非常相似的應用程序,處理某種類型的保存和分叉。當雙鍵重複時增加字段的SQL語法

我有一個3列的SQL表'url':一個給定的保存狀態的代碼,它的版本(1,2,3等),以及另一個索引的保存狀態的ID表。 說我有一個保存狀態的代碼,並且想分叉它(創建它的一個新版本)。我該如何告訴MySQL在'url'中用與提供的代碼相同的代碼插入一行,但版本號等於此代碼使用的最後一個版本號+ 1?

總之,這與ON DUPLICATE KEY UPDATE相反。我想要的是,在重複鍵上,插入與重複鍵略有不同。

回答

1

假設 '富' 的code和1的id

INSERT INTO url (code, version, id) 
    SELECT 'foo', COALESCE(MAX(version) + 1, 1), 1 -- is 'foo' already there? 
     FROM url 
     WHERE code = 'foo'; 
+0

等待,這將是ID插入呢? – Cystack 2012-02-04 13:08:31

+0

我的不好,它的作品完美。有沒有辦法讓我知道COALESCE(MAX(version)+ 1,1)返回的內容? – Cystack 2012-02-04 13:37:41

+0

@Cystack,你必須發出一個新的查詢來確定。 – pilcrow 2012-02-04 19:15:41