第1行的SQL Update列值,来自第2行的值

时间:2010-10-22 10:37:20

标签: sql

大家好 我们正在使用SQL 2005(MS),

我有一个存储交易的表。每次发生特定事件时,都会为该表的特定事务添加3行。

现在我们要更改(更新)第1行中名为commision的列,其中第1行为null,第2行中相同列的值为123,这是可能的吗?

1 个答案:

答案 0 :(得分:1)

update mytable a
   set commission = ( select commission
                        from mytable b
                       where a.transaction = b.transaction
                         and b.event = 'row 2 event' ) // some value that selects row 2
  where a.event = 'row 1 event'                        // some value that selects row 1
    and a.transaction = 'specific transaction'         // leave off for all transactions

根据你的评论,我已将声明重新格式化为:

UPDATE PAYMENT a
SET COMMISSION= ( SELECT COMMISSION
                    FROM PAYMENT b
                   WHERE b.PAYMENT_SEQ = 3
                     AND a.transaction_ID = b.TRANSACTION_ID )
WHERE a.PAYMENT_SEQ = 1
  AND a.TRANSACTION_ID = 1234

为什么在= 1234更简单并获得相同结果时使用IN(1234)。您可以在内部选择中匹配a.transaction_id = b.transaction_id,这样您就不必在内部选择上重复1234事务选择。

此语法适用于其他SQL版本,但不适用于LarsH已测试过的SQL Server 2005。必须从语句中删除别名。

相关问题