如何在SQL的update语句中使用group by?

3

首先,我搜索教授超过2门课程的姓名。

SELECT i.name, COUNT(*) teaches FROM instructor i
INNER JOIN teaches t ON i.id = t.id
GROUP BY name
HAVING COUNT(*)>=2;

目前这个技术已经生效,因此我希望能够根据这些结果提高工资。

UPDATE i SET salary = salary*1.05
FROM instructor i
INNER JOIN teaches t ON i.id = t.id
GROUP BY name HAVING COUNT(*)>=2;

出现了SQL语法错误,如何解决?


你使用的是哪个版本的 SQL(例如 MySQL、SQL Server、Oracle)? - Tim Biegeleisen
我使用MYSQL,MariaDB。 - alive
1个回答

2
我会在这里使用更新连接:
UPDATE instructor t1
INNER JOIN
(
    SELECT i.id
    FROM instructor i
    INNER JOIN teaches t ON i.id = t.id
    GROUP BY i.id
    HAVING COUNT(*) > 1
) t2
    ON t2.id = t1.id
SET
    salary = 1.05 * salary;

1
谢谢评论!我还需要学习更多有关内联接的内容。 - alive

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接