我正在构建一个与jsfiddle.net非常相似的应用程序,处理某种类型的保存和分叉。
我有一个3列的SQL表'url':给定保存状态的代码,它的版本(1,2,3等),以及在另一个表中索引的已保存状态的id 。 假设我有一个已保存状态的代码,并想要分叉它(创建它的新版本)。如何告诉MySQL使用提供的相同代码插入'url'中的行,但是版本号等于用于此代码的最后版本号+ 1?
简而言之,这与ON DUPLICATE KEY UPDATE相反。我想要的是,在重复键上,插入与重复键略有不同。
答案 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';