- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的数据库中有一个表story_category
,其中的条目已损坏。下一个查询返回损坏的条目:
SELECT *
FROM story_category
WHERE category_id NOT IN (
SELECT DISTINCT category.id
FROM category INNER JOIN
story_category ON category_id=category.id);
我试图删除它们执行:
DELETE FROM story_category
WHERE category_id NOT IN (
SELECT DISTINCT category.id
FROM category
INNER JOIN story_category ON category_id=category.id);
但我收到下一个错误:
#1093 - You can't specify target table 'story_category' for update in FROM clause
我该如何克服这个问题?
最佳答案
更新:此答案涵盖了一般错误分类。有关如何最好地处理 OP 的确切查询的更具体答案,请参阅此问题的其他答案
在 MySQL 中,您无法修改在 SELECT 部分中使用的同一个表。
此行为记录在: http://dev.mysql.com/doc/refman/5.6/en/update.html
也许您可以将表格本身连接起来
如果逻辑足够简单,可以重新调整查询,则可以使用适当的选择标准,丢失子查询并将表连接到自身。这将导致 MySQL 将表视为两个不同的事物,从而允许进行破坏性更改。
UPDATE tbl AS a
INNER JOIN tbl AS b ON ....
SET a.col = b.col
或者,尝试将子查询更深地嵌套到 from 子句中...
如果你绝对需要子查询,有一个解决方法,但它是丑陋有几个原因,包括性能:
UPDATE tbl SET col = (
SELECT ... FROM (SELECT.... FROM) AS x);
FROM 子句中的嵌套子查询创建一个隐式临时表表,因此它不算作您正在更新的同一个表。
...但要注意查询优化器
但是,请注意 MySQL 5.7.6 中的内容之后,优化器可能会优化子查询,但仍然会给出错误。幸运的是,optimizer_switch 变量可用于关闭此行为;尽管我不建议将其视为短期修复或小型一次性任务。
SET optimizer_switch = 'derived_merge=off';
感谢 Peter V. Mørch请在评论中获取此建议。
示例技术来自 Baron Schwartz,originally published at Nabble ,在这里进行解释和扩展。
关于MySQL 错误 1093 - 无法在 FROM 子句中指定要更新的目标表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40944457/
在我的应用程序中,我想检测手指按在屏幕上的类型。触摸类型可能是单点触摸或多点触摸。我搜索了很多,但找不到任何东西。 有什么方法可以找到类型吗? 最佳答案 不可能知道哪个手指在某个点,但您肯定可以获得每
以下代码是我一直在尝试用于多点触控的代码。手指一设置正确并在我拖动手指时四处移动。当我触摸并松开手指时,第二个手指出现并消失,但它永远不会移动。知道有什么问题吗? 我已阅读 developers bl
我是一名优秀的程序员,十分优秀!