Cette solution de question d'entretien ne fonctionne pas car j'ai deux colonnes dans la sous-requête si j'utilise la clause IN
代替 = ,则无法使用
位于 LIMIT
WHERE
après. J'utilise MySQL.
UPDATE employees SET salary = salary + (0.10*salary) WHERE team = ( SELECT team, AVG(salary) avg_sal FROM employee GROUP BY team ORDER BY avg_sal LIMIT 1)
La requête ci-dessus générera l'erreur suivante :
SQL 错误 [1241] [21000]:操作数应包含 1 列
Si dans WHERE
子句后面使用 IN
而不是 =
dans la requête ci-dessus, l'erreur suivante sera générée :
SQL 错误 [1235] [42000]:此版本的 MySQL 尚不支持“LIMIT & IN/ALL/ANY/SOME 子查询”
La solution attendue est celle indiquée dans le titre :
平均工资最低的部门加薪10%
Comment puis-je réécrire cette requête pour surmonter ce problème ?
Vous pouvez demander à la sous-requête de renvoyer uniquement l'équipe au lieu des deux colonnes. C'est peut-être la requête que vous souhaitez écrire :
Malheureusement, cela renvoie l'erreur :
Il s'agit d'une limitation typique de MySQL, qui ne vous permet pas de rouvrir le
where
子句中更新的表。相反,您可以加入
: