Sql “更新查询”;“可更新查询”;问题
在Access 2003中,我尝试获取一个表,如果给定ID的任何一行的任何指示符=1,那么将该ID的所有行设为=1 例如,如果我们有:Sql “更新查询”;“可更新查询”;问题,sql,ms-access,Sql,Ms Access,在Access 2003中,我尝试获取一个表,如果给定ID的任何一行的任何指示符=1,那么将该ID的所有行设为=1 例如,如果我们有: ID Indicator Jack 0 Jack 0 Jeff 1 Jeff 0 Mark 1 Mark 1 将成为: ID Indicator Jack 0 Jack 0 Jeff 1 Jeff 1 Mark 1 Mark 1 因为Jeff和Mark都至少有一行Indicator=1,所以我想让他们所有的行都=1 到目前为止,这是我的尝试,但我
ID Indicator
Jack 0
Jack 0
Jeff 1
Jeff 0
Mark 1
Mark 1
将成为:
ID Indicator
Jack 0
Jack 0
Jeff 1
Jeff 1
Mark 1
Mark 1
因为Jeff和Mark都至少有一行Indicator=1,所以我想让他们所有的行都=1
到目前为止,这是我的尝试,但我一直得到一个错误“操作必须使用可更新的查询”(我认为,因为select语句不是一个表……您无法更新查询)
在不制作临时表的情况下,快速高效地执行此操作的好方法是什么?或者临时表是最佳/最有效的解决方案?这将混乱我的数据库相当多,因为有8行我必须这样做。。。我正在操作的表约为300MB
感谢最简单的解决方案:
UPDATE TABLE
SET indicator = 1
WHERE id IN ('Jeff', 'Mark') --etc
如果只想更新值尚未为1的行:
UPDATE TABLE
SET indicator = 1
WHERE id IN ('Jeff', 'Mark')
AND indicator != 1
最简单的解决方案:
UPDATE TABLE
SET indicator = 1
WHERE id IN ('Jeff', 'Mark') --etc
如果只想更新值尚未为1的行:
UPDATE TABLE
SET indicator = 1
WHERE id IN ('Jeff', 'Mark')
AND indicator != 1
这是一种方法:
UPDATE T1 SET Indicator = 1
WHERE Indicator = 0
AND EXISTS (SELECT * FROM T1 AS T2 WHERE T2.Indicator = 1 AND T1.ID = T2.ID)
这是一种方法:
UPDATE T1 SET Indicator = 1
WHERE Indicator = 0
AND EXISTS (SELECT * FROM T1 AS T2 WHERE T2.Indicator = 1 AND T1.ID = T2.ID)
你试过这样的东西吗
UPDATE [Table] SET [Table].[Indicator] = 1, [Table].ID = [ID]
WHERE Exists (SELECT * FROM [Table] t WHERE ID = t.ID and [Table].Indicator = 1);
你试过这样的东西吗
UPDATE [Table] SET [Table].[Indicator] = 1, [Table].ID = [ID]
WHERE Exists (SELECT * FROM [Table] t WHERE ID = t.ID and [Table].Indicator = 1);
您需要提供更多关于如何确定哪些
ID
s要更新,哪些不更新的详细信息。SQL需要声明性逻辑才能做出决定。您需要提供更多关于如何决定哪些ID
s要更新,哪些不更新的详细信息。SQL需要声明性逻辑才能做出这样的决定。如果我将select distinct语句放在WHERE(如您所用)中,而将其作为联接(如我所用),则效果非常好,谢谢如果我将select distinct语句放在WHERE(如您所用)中,而将其作为联接(如我所用),则效果非常好,谢谢