即使缺少键,如何在mysql中插入记录

问题描述 投票:0回答:3

我有一张这样的桌子:

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 +先前的余额。都是插入内容,没有更新。谢谢。

mysql sql sql-insert
3个回答
1
投票

您可以用idctr上创建主键,并设置ctr自动递增。

因此,每次用id = A插入记录时,点击率都会自动增加。

`ctr` int(11) NOT NULL AUTO_INCREMENT, 
...
PRIMARY KEY (`id`,`ctr`)

0
投票

您可以使用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

Demo

even对于不存在唯一键否则的情况>

INSERT INTO ...
SELECT ... FROM ...
ON DUPLICATE KEY UPDATE ... 

更适合使用。


0
投票

您可以在一个查询中表示为:

© www.soinside.com 2019 - 2024. All rights reserved.