2

我有一个用于跟踪票证的访问数据库。由于与该票证相关的不同编程更改,每张票证可能有多次出现。每条记录还有一个 program_type 字段,即 SVR 或 VB。例子:

123456 - SVR - SomeCode

123456 - VB - SomeVBCode

我在数据库中添加了一个名为 VB_Flag 的列,默认为 0,我想为每张包含 VB 代码的票将其更改为数字 1。所以,这里的结果是:

123456 - SVR - SomeCode - 1

123456 - VB - SomeVBCode - 1

但是,我一生都无法弄清楚如何编写此更新查询。起初我试过:

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

但这显然遗漏了所有与 VB 代码共享票号的 SVR 代码。

我不知所措。帮助?

4

4 回答 4

2

你可以这样做:

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

内部 SELECT 语句返回具有 program_type 为“VB”的所有票证 ID 的列表。

然后,更新将 VB_Flag 设置为 1,用于具有这些票证 ID 之一的所有记录(包括那些 program_type 为“SVR”的记录)。

于 2009-01-30T18:08:04.520 回答
1

这应该有效:

UPDATE table SET VB_Flag = 1 
WHERE TicketNum IN (SELECT TicketNum FROM Table WHERE program_type = 'VB')
于 2009-01-30T18:05:44.603 回答
1

UPDATE Table INNER JOIN Table AS Table2 ON Table.TicketNumber = Table2.TicketNumber SET Table2.VB_Flag = 1 WHERE (([Table].[program_type]="VB"))

于 2009-01-30T18:07:46.330 回答
0

一个简单的嵌套选择应该可以解决您的问题:

UPDATE myTable
SET VB_Flag = 1 
WHERE TicketID in (Select TicketID from myTable WHERE program_type = 'VB')
于 2009-01-30T18:06:43.540 回答