Penyelesaian soalan temu duga ini tidak berfungsi kerana saya mempunyai dua lajur dalam subkueri jika saya menggunakan klausa IN
代替 = ,则无法使用
位于 LIMIT
WHERE
selepas. Saya menggunakan 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)
Pertanyaan di atas akan menimbulkan ralat berikut:
SQL 错误 [1241] [21000]:操作数应包含 1 列
Jika dalam WHERE
子句后面使用 IN
而不是 =
dalam pertanyaan di atas, ralat berikut akan dilemparkan:
SQL 错误 [1235] [42000]:此版本的 MySQL 尚不支持“LIMIT & IN/ALL/ANY/SOME 子查询”
Penyelesaian yang diharapkan adalah seperti yang dinyatakan dalam tajuk:
平均工资最低的部门加薪10%
Bagaimana saya boleh menulis semula pertanyaan ini untuk mengatasi masalah ini?
Anda boleh mempunyai pasukan pulangan subkueri sahaja dan bukannya kedua-dua lajur. Mungkin, ini adalah pertanyaan yang ingin anda tulis:
Malangnya, ini membuang ralat :
Ini adalah had biasa MySQL, yang tidak membenarkan anda membuka semula
where
子句中更新的表。相反,您可以加入
: