更新另一个表中的相应值

时间:2013-12-12 10:21:24

标签: sql oracle

我有两个名为sales和login的表。我的表结构如下所示。有时我的程序更新custid而不是sales表列userid中的userid,但logid在sales表中正确更新。我有另一个表tbl_log如下所示。我想使用tbl_log基于logid更新sales表userid。

销售表

Fld_id  Fld_cust_id Fld_log_id  Fld_amount  Fld_user_id
1   S1002   101 100 d2121
2   S1003   102 121 S1003
3   S1004   103 120 d2123
4   S1005   102 130 d2122
5   S1006   102 1234    S1006
6   S1007   102 111 d2122
7   S1008   103 21  d2123
8   S1009   103 234 S1009
9   S1010   104 31  d2124
10  S1011   104 60  S1011

日志表

Fld_log_id  Fld_user_id
101 d2121
102 d2122
103 d2123
104 d2124

确切输出

Fld_id  Fld_cust_id Fld_log_id  Fld_amount  Fld_user_id
1           S1002           101         100         d2121
2           S1003           102         121         d2122
3           S1004           103         120         d2123 
4           S1005           102         130         d2122
5           S1006           102         1234            d2122
6           S1007           102         111         d2122
7           S1008           103         21          d2123
8           S1009           103         234         d2123
9           S1010           104         31          d2124
10          S1011           104         60          d2124

1 个答案:

答案 0 :(得分:0)

要根据日志表中的值更新销售中的值,请执行以下操作:

UPDATE sales S 
SET S.Fld_user_id = (SELECT l.Fld_user_id 
                     FROM logSales l 
                     WHERE l.Fld_log_id  = s.Fld_log_id);

sqlfiddle demo