此面試問題解決方案不起作用,因為我在子查詢中有兩列,如果我使用IN
代替= ,則無法使用
位於LIMIT
WHERE
子句之後。我使用 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)
上述查詢將引發以下錯誤:
SQL 錯誤 [1241] [21000]:運算元應包含 1 列
如果在上面的查詢中在 WHERE
子句後面使用 IN
而不是 =
,則會引發以下錯誤:
SQL 錯誤 [1235] [42000]:此版本的 MySQL 尚未支援「LIMIT & IN/ALL/ANY/SOME 子查詢」
#預期的解決方案如標題所述:
平均薪資最低的部門加薪10%
#如何重寫此查詢來克服這個問題?
您可以讓子查詢只傳回團隊而不是兩列。也許,這是您想要編寫的查詢:
不幸的是,這會引發錯誤:
這是 MySQL 的一個典型限制,它不允許您重新開啟在
where
子句中更新的表。相反,您可以加入
: