当双键重复时,SQL语法增加字段

时间:2012-02-04 02:39:20

标签: mysql

我正在构建一个与jsfiddle.net非常相似的应用程序,处理某种类型的保存和分叉。

我有一个3列的SQL表'url':给定保存状态的代码,它的版本(1,2,3等),以及在另一个表中索引的已保存状态的id 。 假设我有一个已保存状态的代码,并想要分叉它(创建它的新版本)。如何告诉MySQL使用提供的相同代码插入'url'中的行,但是版本号等于用于此代码的最后版本号+ 1?

简而言之,这与ON DUPLICATE KEY UPDATE相反。我想要的是,在重复键上,插入与重复键略有不同。

1 个答案:

答案 0 :(得分:1)

假设code的'foo'和id为1:

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