mysql - 您不能在 FROM 子句中指定要更新的目标表 'wp_mail_queue'

标签 mysql

我收到这个错误:

You can't specify target table 'wp_mail_queue' for update in FROM clause

因为这个查询:

DELETE FROM wp_mail_queue 
WHERE message_id = (SELECT message_id FROM wp_mail_queue ORDER BY id LIMIT 0, 1)
ORDER BY wp_mail_queue.id 
LIMIT 100

我想它是子查询的结果。将 DELETE 替换为 SELECT *,它会准确返回我要删除的条目。我需要的是一种重写它的方法,这样我就不需要在那个子查询中查询 wp_mail_queue,或者完全避免子查询。

我首先想到的是变量,如果我能以某种方式将子查询分配给一个变量然后使用它呢?

最佳答案

尝试:

DELETE FROM wp_mail_queue 
WHERE message_id = (SELECT * FROM (SELECT message_id FROM wp_mail_queue ORDER BY id LIMIT 0, 1) queue_table)
ORDER BY wp_mail_queue.id 
LIMIT 100

关于mysql - 您不能在 FROM 子句中指定要更新的目标表 'wp_mail_queue',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7378486/

相关文章:

php - 使用 php pdo 为一年中的每个日期添加一行

mysql计算几个月内的叶子数

php - 群组消息传递的数据库设计

php - 如何从数据库中取出与用户选择的值相关的值?

asp.net - 限制mysql查询的记录数

sql - 如何在 sql 中的单个查询中获取类别和子类别? (mysql)

PHP优化多重更新和选择查询

mysql - 超过锁等待超时;从表中删除数据时尝试重新启动事务

php - 错误 : Array to string conversion error

php - 在具有多个值的字符串中搜索 Symfony 3