INSERT可以返回在MySQL中不会自动递增的ID

时间:2018-09-27 21:37:02

标签: mysql sql-insert

我有一个看起来像这样的数据库

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的信息吗? (就像auto_increment ID一样可修改)

谢谢

1 个答案:

答案 0 :(得分:0)

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

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

然后,您可以在同一MySQL连接中的后续查询中使用@last_msgId,类似于使用LAST_INSERT_ID()进行常规自动递增的方式。