Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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 SQL can';无法运行更新查询,因为表被指定了两次_Mysql_Sql_Database - Fatal编程技术网

Mysql SQL can';无法运行更新查询,因为表被指定了两次

Mysql SQL can';无法运行更新查询,因为表被指定了两次,mysql,sql,database,Mysql,Sql,Database,我是SQL新手,不能充分利用其他类似的问题 我想给所有同住一所房子的人打30%的折扣,所以我有一张桌子,上面有身份证、价格和房子名称 这是我的问题: UPDATE person SET price= price*0.97 WHERE house IN (SELECT p.house FROM person p GROUP BY p.house HAVING COUNT(*) >2); 它说“表被指定了两次,既作为‘更新’的目标,也作为单独的数据源”,但我不知道其他方法来保存房子的字符串并

我是SQL新手,不能充分利用其他类似的问题

我想给所有同住一所房子的人打30%的折扣,所以我有一张桌子,上面有身份证、价格和房子名称

这是我的问题:

UPDATE person
SET price= price*0.97
WHERE house IN (SELECT p.house FROM person p GROUP BY p.house HAVING COUNT(*) >2);
它说“表被指定了两次,既作为‘更新’的目标,也作为单独的数据源”,但我不知道其他方法来保存房子的字符串并比较其他声音


我应该如何继续?

这是MySQL中的一个限制。解决方案是使用
连接

UPDATE person p JOIN
       (SELECT p.house
        FROM person p
        GROUP BY p.house
        HAVING COUNT(*) > 2
       ) ph
       ON p.house = ph.house
    SET p.price = p.price * 0.97;
JOIN
执行过滤,而不是
中的