从表A中选择ID后,sql更新表b

时间:2017-03-17 01:04:56

标签: sql sql-server database sql-server-2008 select

我有两张桌子

表A

   Pid  Name
    1        A
    3        B
    4        C

表B

  Pid  Name  Status
   1        A      0
   2        B      0
   3        C      0
   4        D      0

我想通过选择所有表A pid将表B的状态从0更新为1。

例如。表A没有PId = 2,因此表B的Pid = 2不应更新。

我尝试了以下查询但没有运气

UPDATE Table_B 
SET 
Status = 1
WHERE Table_B.Pid = (SELECT  Table_A.Pid 
                             FROM   Table_A 
                             WHERE  Table_A.Pid = Table_B.Pid) 

任何帮助都将不胜感激。

由于

4 个答案:

答案 0 :(得分:1)

尝试:

UPDATE Table_B 
SET 
Status = 1
WHERE Table_B.Pid in (SELECT Table_A.Pid FROM Table_A )

答案 1 :(得分:0)

即使在更新期间也可以使用内部联接

A

答案 2 :(得分:0)

试试这个

UPDATE B 
SET 
Status = 1
from Table_B B
inner join Table_A A on A.pid = B.pid
WHERE  B.Status = 0

答案 3 :(得分:0)

也许这是一个简化的例子,但我看到了2个问题。首先,名称列不应位于2个不同的位置 - 仅1个。其次,应在需要时计算状态,而不是更新。

所以它应该更像是:

Please select from the above options: 2

Add a Number
============
8885551212
1. Display Phone List
2. Add a Number
0. Exit

Please select from the above options: 1

Phone Numbers
==============
(888)-555-1212
1. Display Phone List
2. Add a Number
0. Exit

Please select from the above options: 0

Exiting Phone Number App. Good Bye!!!