insert可以返回一个在mysql中不是自动递增的id

aiqt4smr  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(331)

我有一个像这样的数据库

int groupId
int msgId
data

其中主键由groupid+msgid组成,例如有些键是1-1、1-2、1-3、2-1、2-2、2-3等等
所以当插入一个新值时,它是这样做的

INSERT INTO chatMessages (msgId, groupId, ...) 
SELECT MAX(msgId)+1, ?, ... 
FROM chatMessages 
WHERE chatMessages.groupId = ?

有我自己的自动递增排序,比如说序列号在每个组中表现得很好。
现在,当我插入一个新的信息,有什么办法我可以得到 msgId 不做两个单独的请求(例如自动增量id(可检索)
谢谢您

qoefvg9y

qoefvg9y1#

可以设置用户定义的变量:

INSERT INTO chatMessages (msgId, groupId, ...) 
SELECT @last_msgId := MAX(msgId)+1, ?, ... 
FROM chatMessages 
WHERE chatMessages.group = ?

那你可以用 @last_msgId 在同一mysql连接中的以下查询中,类似于您将使用的方式 LAST_INSERT_ID() 正常自动递增。

相关问题