2009-01-30 83 views
2

我有一個訪問數據庫,我們用它來跟蹤票據。每張票可能有多次出現,因爲與該票有關的編程更改不同。每個記錄還有一個program_type字段,即SVR或VB。例如:訪問數據庫查詢 - 需要幫助更新某些記錄

123456 - SVR - SomeCode 

123456 - VB - SomeVBCode 

我已經添加到稱爲VB_Flag數據庫中,默認爲0,這是我想改變爲數字1爲含有VB代碼每票其中一列。所以,這裏的結果是:

123456 - SVR - SomeCode - 1 

123456 - VB - SomeVBCode - 1 

但是,我不知道如何編寫此更新查詢的生活。起初,我嘗試過:

UPDATE table SET VB_Flag = 1 WHERE program_type = 'VB' 

但是,這顯然省略了與VB代碼共享票號的所有SVR代碼。

我不知所措。幫幫我?

回答

1

這應該工作:

UPDATE table SET VB_Flag = 1 
WHERE TicketNum IN (SELECT TicketNum FROM Table WHERE program_type = 'VB') 
+0

洛爾 - !你比我快 – Traingamer 2009-01-30 18:07:24

+0

感謝我周圍玩TicketNum IN()的東西,但無法完全弄清楚它是這樣得到的! – somacore 2009-01-30 18:28:02

0

一個簡單的嵌套選擇應該把你的問題的護理:

UPDATE myTable 
SET VB_Flag = 1 
WHERE TicketID in (Select TicketID from myTable WHERE program_type = 'VB') 
1

UPDATE 表 INNER JOIN表作爲表2 ON Table.TicketNumber =表2。 TicketNumber SET Table2.VB_Flag = 1 WHERE (([Table]。[program_type] =「VB」))

2

你可以做這樣的事情:

UPDATE tickets SET VB_Flag = 1 
WHERE ticket_id IN (SELECT ticket_id FROM tickets WHERE program_type = 'VB'); 

內SELECT語句返回有「VB」的program_type所有ticket_ids的列表。 。

更新然後用這些ticket_ids之一(包括那些「SVR」的program_type設置VB_Flag爲1的所有記錄