如果值存在于另一个表中,则更新一个表的SQL语句

时间:2014-03-04 22:16:42

标签: sql sql-server

我对MSSQL很新,只是有一些相当基本的更新语句的经验。我想知道是否有人可以帮助我使用正确的语法来执行以下操作:

我有两个表F4101F4102,其中IMITM (F4101)IBITM (F4102)列中包含相同的商品ID。

只需要更新F4102,但它会根据F4101进行更新,并且需要确保它正在更新F4102中的正确项目。

该陈述需要检查F4101 IMSRTX ='RESIN'的位置,然后设置F4102 IBBUYR = 1009,同时确保F4101 IMITM等于F4102 IBITM。

我很感激帮助!

示例数据:

F4101:
+-------+--------+
| IMITM | IMSRTX |
+-------+--------+
| 7493  | RESIN  |
| 7494  | MINOR  |
| 7495  | MINOR  |
| 7496  | RESIN  |
+-------+--------+

F4102:
+-------+--------+
| IBITM | IBBUYR |
+-------+--------+
| 7493  |        |
| 7494  |        |
| 7495  |        |
| 7496  |        |
+-------+--------+

如果F4101包含IMITM的树脂,则需要更新F4102的IBBUYR列,其值为F4101的IMITM等于F4102的IBITM。

3 个答案:

答案 0 :(得分:2)

UPDATE F4102 
SET    IBBUYR = 1009
WHERE EXISTS (
              SELECT 1
              FROM F4101 
              WHERE IMITM  = F4102.IBITM 
              AND  IMSRTX = 'RESIN'
             )

答案 1 :(得分:1)

Update F4102
Set IBBUYR=1009
From F4102 F2
Inner Join F4101 F1 on F2.IBITM = F1.IMITM
Where F1.IMSRTX='RESIN' 

答案 2 :(得分:0)

update tableA set tableA.col1='it works'
where tableA.Id=:aId 
and
(select true from customer where tableBId=:bId)

这可能对你有用。