我正在使用 MySQL,我的目标是UPDATE
仅在表中满足特定条件的字段。这是我所拥有的:
UPDATE tbl_money AS m
SET m.amount = m.amount + (SELECT SUM( b.bn_ppd )
FROM tbl_emp AS e
LEFT JOIN tbl_bonuses AS b
ON b.bn_id = e.bn_id
WHERE m.u_id = e.u_id
HAVING COUNT(e.u_id) > 0
GROUP BY e.u_id LIMIT 1)
有了以上内容,我想在当前金额上添加员工拥有的奖金总和,并且仅适用于存在于tbl_emp
. 事实上,我收到一条错误消息:
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 7 行的“GROUP BY o.user_id LIMIT 1)”附近使用正确的语法
如果没有HAVING
条款,系统会更新所有员工的金额,但没有任何奖金的员工,它只是将金额重置为0(即使他们已经有金额)。对于那些有奖金的人,工作正常。
有任何想法吗?正确的使用方法是HAVING
什么?
更新:
tbl_bonuses
-----------
bn_id | bn_ppd
1 5
2 2
3 4
4 10
tbl_emp
-------
emp_id | u_id | bn_id | ...
1 30 2
2 30 3
3 31 1
tbl_money
---------
m_id | u_id | amount
1 30 100
2 31 56
3 32 35
更新后所需的结果应该是
tbl_money
---------
m_id | u_id | amount
1 30 106
2 31 57
3 32 35
但是,我得到了这个结果,
tbl_money
---------
m_id | u_id | amount
1 30 106
2 31 57
3 32 0