我有一个看起来像这样的数据库
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一样可修改)
谢谢
答案 0 :(得分:0)
您可以设置用户定义的变量:
INSERT INTO chatMessages (msgId, groupId, ...)
SELECT @last_msgId := MAX(msgId)+1, ?, ...
FROM chatMessages
WHERE chatMessages.group = ?
然后,您可以在同一MySQL连接中的后续查询中使用@last_msgId
,类似于使用LAST_INSERT_ID()
进行常规自动递增的方式。