SQL语法问题

时间:2010-03-03 18:33:28

标签: sql mysql

关于UPDATE的SQL语法问题。通过以下示例提出问题要容易得多:

**Payments Table**

ID  user_id  payment_due   payment_made 
1      3        10.0           5.0
1      3        10.0           10.0
1      9        20.0           20.0



**Balance Table**

ID  user_id    current_balance 
1      3            ???
2      9            ???

假设我想更新特定用户的当前余额。添加所有付款会费并从特定用户的所有付款中减去它的正确有效的SQL语法是什么?

在这种情况下,用户'3'的current_balance是5.0,而用户'9'的current_balance是0.0

3 个答案:

答案 0 :(得分:2)

怎么样:

select
   ID,
   user_id,
   (sum(payment_due) - sum(payment_made)) current_balance
from
   PaymentsTable

group by
   ID,
   user_id

答案 1 :(得分:2)

要更新您的表格,请使用子查询:

UPDATE Balance_Table b
SET current_balance =
  ( SELECT SUM( payment_due - payment_made )
    FROM Payments_Table p
    WHERE p.user_id = b.user_id
  )

考虑更新方法。 Balance_Table更改后Payments_Table将不再同步,因此您可能最好从实际中选择数据。

答案 2 :(得分:1)

您需要使用子查询。这样的事情应该有效:

UPDATE
    balance_table b
SET
    current_balance = (SELECT
            SUM(payment_due - payment_made)
        FROM
            payments_table p
        WHERE
            p.user_id = b.user_id)