私は 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 構文にエラーがあります。7 行目の 'GROUP BY o.user_id LIMIT 1)' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
句がない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