我有两个要求。第一个通过将标志更改为is_read来读取聊天消息true。
UPDATE MESSAGES
SET IS_READ = TRUE
WHERE ROOM_ID = '${this.room}'
AND USER_ID != '${this.sender}'
第二个返回来自频繁的消息。
SELECT M.MESSAGE_ID, M.ROOM_ID, M.MESSAGE_TEXT, M.USER_ID, M.IS_READ
FROM MESSAGES AS M
WHERE M.ROOM_ID = '${this.room}'
我正在尝试合并它们,因为现在我在数据库中有两个查询,一个更新和一个提取。
我试着像这样组合它们
SELECT M.MESSAGE_ID, M.ROOM_ID, M.MESSAGE_TEXT, M.USER_ID, M.IS_READ
FROM ( UPDATE MESSAGES
SET IS_READ = TRUE
WHERE ROOM_ID = '1'
AND USER_ID != '71')
WHERE M.ROOM_ID = 1
这两个查询如何组合成一个?
如果有人抱怨 CTE 没有返回任何东西或者它没有在主查询中使用(检查惰性),那么