mysql - MySQL查询给出错误你不能指定目标表
问题描述
我有这个查询。
UPDATE messages
SET seen_by = CONCAT( seen_by, '3,')
WHERE id IN (SELECT id FROM messages WHERE NOT FIND_IN_SET(3, seen_by) AND chat_id = 350)
但是当我尝试执行它时,它给了我这个错误
您不能在 FROM 子句中指定目标表“消息”进行更新
我想更新我在 WHERE 子句中使用的同一个表。我怎样才能做到这一点?
解决方案
您甚至不需要子查询。
只需替换WHERE id IN (SELECT id FROM messages WHERE xyz)
为WHERE xyz
.
这更直接,不必先将所有 ID 加载到 RAM 中(如果它甚至允许你的话)。
推荐阅读
- javascript - 如何在 Wordpress 中从 jQuery 调用 php 函数
- r - eval parse 将字符串保存到变量
- ios - SwiftUI 2matchedGeometryEffect:修饰符的顺序
- python - pandas.merge 结果大于两个单独的数据框
- mysql - 使用 MySQL 特定查询对 JDBC 方法进行单元测试
- linker-scripts - 使 .text 部分只执行
- javascript - 为什么我的条件执行总是首选?
- react-native - 如何在反应原生和反应导航中导航到不同屏幕时删除顶部选项卡导航器
- node.js - 在 Visual Studio 上设置 Node.js
- azure - Azure kubernetes - 在控制台上为生产应用程序编写日志?