1

我只想更新 MS Access 2010 中的一个选定列。但是当我使用下面的更新查询时,
MS Access 会更新所有tarih列值。当我只写下面的 Select 查询时,它可以正常工作。但是当我在嵌套更新查询中使用它时,更新查询会更新所有tarih列值。我能做些什么?

UPDATE words
SET tarih='12'  
WHERE
  tarih = (SELECT FIRST(tarih)   
           FROM words  
           WHERE tarih='11')
4

1 回答 1

1

该示例查询应具有与此相同的影响:

UPDATE words SET tarih='12'
WHERE tarih = '11';

用简单的英语,它将tarih在所有行中更改为 12,其中tarih11。但是,如果您的words表包含多行,其中tarih11,并且您希望tarah仅在其中一行中更改为 12,您需要一种方法来告诉数据库哪个它应该更新的那些行之一。

例如,如果您的words表包含一个名为 的自动编号主键字段id,则以下查询应该执行您想要的操作。

UPDATE words SET tarih='12'
WHERE id = DMin("id", "words", "tarih='11'");

words尝试适用于您的实际表的类似方法。您实际上不需要使用自动编号字段。可以改为使用另一种类型的主键字段。如果您的表不包含主键,请考虑添加一个。如果没有主键,您可以使用字段组合来唯一标识应更新的行。但是,如果没有唯一标识每一行的字段组合,您将无法UPDATE仅匹配多个匹配项中的“第一个”。

于 2012-12-30T16:14:12.097 回答