首先,我搜索教授两门以上课程的人的名字

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语法中的错误;如何修复它?

推荐答案

我将在这里使用UPDATE联接:

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;

Mysql相关问答推荐

我可以指示MariaDB-Install-db和MariaDB忽略配置中的用户设置吗?

按相关表中的计数和特定值过滤

MySQL - 如何根据单列查找重复行?

为两个中的每一个 Select 最大和最小传递条件

使用sql查找源和最终目的地

拆分列值并适当地返回拆分值

在 Spring Data jpa 中的 @Query 中无法识别本机查询

如何计算每行的剩余金额?

根据单个日期字段获取范围/天数

使用另一个表中的值更新一个表中的值

MySQL表中给定字段的每个不同值的连续记录形成对

在一个 SQL 查询中对同一列中相同类型的不同值求和

INNER JOIN 问题(MySQL 错误代码:1054)

如何在任何连续范围内获得最大值

MySQL REGEXP 在没有 BINARY 模式的情况下区分大小写?

如何判断嵌套查询返回的元组中的每个条目是否相同?

在 MySQL 中使用三个表进行计算

SQL 查找边界之间的值

主键应该始终是无符号的?

在 MySQL Workbench 中导出超过 1000 条记录的查询结果