Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“如何解决MySQL错误”;你可以';t在FROM子句“中指定要更新的目标表X?”;?_Mysql - Fatal编程技术网

“如何解决MySQL错误”;你可以';t在FROM子句“中指定要更新的目标表X?”;?

“如何解决MySQL错误”;你可以';t在FROM子句“中指定要更新的目标表X?”;?,mysql,Mysql,为什么这个查询不起作用 DELETE FROM cancome WHERE user_id IN ( SELECT user_id FROM cancome GROUP BY user_id HAVING COUNT(user_id)>3 ) limit 3 我收到以下错误消息: [Err]1093-无法在FROM子句中为更新指定目标表“cancome” 这不起作用的原因是MySQL不允许您在子查询中引用正在更新的表(cancome) 但是,可以通过在FROM中使用查询而

为什么这个查询不起作用

DELETE FROM cancome WHERE user_id IN (
    SELECT user_id FROM cancome 
GROUP BY user_id
HAVING COUNT(user_id)>3 
  )
limit 3
我收到以下错误消息:

[Err]1093-无法在FROM子句中为更新指定目标表“cancome”


这不起作用的原因是MySQL不允许您在子查询中引用正在更新的表(cancome)

但是,可以通过在FROM中使用查询而不是表本身来克服这一问题,这样做的效果是复制请求的表值,而不是引用正在更新的表值

因此,即使违反直觉,这也能有效地发挥作用:

DELETE FROM cancome WHERE user_id IN
 ( SELECT user_id FROM (SELECT * FROM cancome) AS cancomesub
 GROUP BY user_id HAVING COUNT(user_id)>3 )
 limit 3

当我尝试您回答的这段代码时,我收到一条消息“[Err]1248-每个派生表都必须有自己的别名”谢谢您的工作您是对的,这是违反直觉的,您也是对的,它工作起来很有魅力。:-)这是否保证以原子方式运行?