我有两张桌子
表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)
任何帮助都将不胜感激。
由于
答案 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!!!