多謝@小魚大大
也多謝各位幫忙
小弟欲將Table1的c欄位,由原先的數值,全部Update為'1'
如下方:希望結果
試了好幾個方式Join都不對......還請指教指導 感激
Table1
a欄位|b欄位| c欄位
1001 | 0001 | 5
1001 | 0002 | 7
1001 | 0003 | 4
Table2
x欄位 | y欄位
0001 | 8
0002 | 8
0003 | 1
0004 | 3
Where的條件有兩項:
(一)Table1的b欄位 = Table2的x欄位(兩邊資料符合才顯示)
And (二)Table2的y欄位 = 8
希望結果
Table1
a欄位 |b欄位 | c欄位
1001 | 0001 | 1
1001 | 0002 | 1
1001 | 0003 | 1
全部 UPDATE 為1那不是很簡單嗎?
UPDATE Table1 SET c欄位 = 1;
就解決了
有可能會跳警告,
不理它就好了。
還有一種不會跳警告的方式
UPDATE Table1 SET c欄位 = 1 WHERE 1 = 1;
看到WHERE就不會跳警告了...
@小魚大大
雖說是要全部Update成1
但是其中要兩個Where條件須要處理呢
這要實際跑看看才能確定,
應該是這樣吧...
UPDATE Table1 SET c欄位 = 1 WHERE b欄位 IN (SELECT x欄位 FROM Table2 WHERE y欄位 = 8)
可是你這樣前後矛盾,
如果y欄位要=8,
你 希望結果 的 0003 那行就不該變成1了...
不好意思,問題打錯了,已修正Table2的x欄位,第四行003改為004
這樣得出來的結果還是怪怪的啊...
謝謝@小魚大大的鼎力相助,OK了UPDATE Table1 SET c欄位 = 1 WHERE b欄位 IN (SELECT x欄位 FROM Table2 WHERE y欄位 = 8)
搞錯要update的值。
最近常看錯。Orz
另外你的結果蠻怪的
Where的條件有兩項:
(一)Table1的b欄位 = Table2的x欄位(兩邊資料符合才顯示)
And (二)Table2的y欄位 = 8
然後確定出來不是
Table1
a欄位 |b欄位 | c欄位
1001 | 0001 | 1
1001 | 0002 | 1
1001 | 0003 | 4
嗎?
Where的條件有兩項:
(一)Table1的b欄位 = Table2的x欄位(兩邊資料符合才顯示)
And (二)Table2的y欄位 = 8
照你的條件先把資料select出來
select *
from Table1
join Table2 on Table1.b=Table2.x
where Table2.y=8
結果應該會長這樣:
a欄位 | b欄位 | c欄位 | x欄位 | y欄位 |
---|---|---|---|---|
1001 | 0001 | 5 | 0001 | 8 |
1001 | 0002 | 7 | 0002 | 8 |
不管怎樣都不會出現你希望的結果
因為Table2的0003那一列不會符合"(二)Table2的y欄位 = 8" 這個條件
除非你把Table2中0003那一列的y欄位改為8
試試這個方式.....
update Table1 set c=1 from Table1,Table2 where Table1.b=Table2.x and Table2.y=8
試試看這個:
UPDATE aa SET c=1
FROM Table1 AS aa
INNER JOIN Table2 AS bb ON bb.x = aa.b AND bb.y = 8