请帮助我使用MySQL更新来更新带有选择自身的结果返回列。MySQL - 使用子查询选择自身更新列值
举例来说,我有两个表
TABLE user( userid int, groupid int )
TABLE thread ( threadid int, userid int, sticky tinyint, vip tinyint )
现在,我试图用一个更新查询来实现这一点,但似乎无法做到这一点。我想我应该做的是:
UPDATE user SET groupid=15 WHERE userid IN (SELECT userid FROM thread t LEFT JOIN user u ON u.userid=t.userid WHERE (t.sticky=1 AND t.vip=1) AND (u.groupid=11 OR u.groupid=14) GROUP BY t.userid);
但MySQL的甾体抗炎药:#1093 - 您不能指定目标表“用户”的更新在FROM子句
请帮帮我!
通常,在没有任何聚合函数的情况下,GROUP BY子句是一个坏主意。 MySQL会原谅(甚至优化)像差,但它往往会导致意想不到或错误的结果。另外,除非包含IS NULL比较,否则在没有选择列的表上使用LEFT JOIN就显得很奇怪! – Strawberry 2014-10-07 08:06:55
可能重复的[Mysql错误1093 - 无法在FROM子句中指定更新的目标表](http://stackoverflow.com/questions/45494/mysql-error-1093-cant-specify-target-table-for-从子句中更新) – Juru 2014-10-07 08:07:12
GROUP BY因为结果返回重复的userid。 我如何才能解决问题,只有单个查询? – hatxi 2014-10-07 08:21:06