我有一张这样的桌子:
ID CTRA 1
我想插入ID为A的行并将ctr更新为2ctr的新值为2是基于以前的值增加1。该表将如下所示。
ID CTRA 1A2
现在,我想插入另一行IDB。但是由于表中不存在B,因此它将计数器初始化为1。因此,该表将如下所示。
ID CTRA 1A2B 1
是否可以在一个sql语句中执行此操作? (我更喜欢mysql)非常感谢。
编辑:实际上,该表非常简单。实际的表格如下所示:
id amt余额点击率A 100 100 1150250 2B 50 50 1
与点击率一样,余额为amt +先前的余额。都是插入内容,没有更新。谢谢。
您可以用id
在ctr
上创建主键,并设置ctr
自动递增。
因此,每次用id = A
插入记录时,点击率都会自动增加。
`ctr` int(11) NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (`id`,`ctr`)
您可以使用COALESCE( MAX(ID)+1, 1 )
来将不存在的字母ID的INSERT Statement
初始化为
SET @ctr = 'B';
INSERT INTO tab
SELECT COALESCE(MAX(ID)+1,1),@ctr FROM tab WHERE ctr = @ctr
even对于不存在唯一键,否则的情况>
INSERT INTO ... SELECT ... FROM ... ON DUPLICATE KEY UPDATE ...
更适合使用。
您可以在一个查询中表示为: