我有两个表CHEF和MEAL。 我想要做的是降低每个尚未制作单一餐的厨师的薪水。 这是我的查询SQL两个表单行子查询返回多个行
UPDATE CHEF
SET Chef_salary = Chef_salary-(Chef_salary/100 * 5)
WHERE Chef_ID=(SELECT c.Chef_ID
FROM CHEF c LEFT JOIN MEAL m ON (c.Chef_ID=m.Chef_ID)
HAVING count(m.Chef_ID)='0'
GROUP BY c.Chef_ID);;
它返回它说:“单行子查询返回多个行” 我到底做错了什么错误?
内子查询'选择c.Chef_ID FROM CHEFÇLEFT JOIN餐M于(C .Chef_ID = m.Chef_ID) HAVING count(m.Chef_ID)='0' GROUP BY c.Chef_ID'返回多于一行。如果要运行整个更新查询,它应该只返回一行。运行子查询独立,你会发现多个结果正在退回。 – user1
SET Chef_salary = Chef_salary * 0.95可能会给你相同的结果,减少计算,假设减少5%是你正在寻找的 – JamieD77
不需要加入两张表。更新CHEF c设置Chef_salary = Chef_salary-(Chef_salary/100 * 5) 其中c.Chef_ID不在(从MEAL m中选择Chef_ID) –