我想只更新MS Access 2010中的一个选定列。但是当我使用下面的更新查询时
MS Access更新所有tarih
列值。当我写下面的Select查询时,它可以正常工作。但是当我在嵌套更新查询中使用它时,更新查询会更新所有tarih
列值。我该怎么办?
UPDATE words
SET tarih='12'
WHERE
tarih = (SELECT FIRST(tarih)
FROM words
WHERE tarih='11')
答案 0 :(得分:1)
该示例查询应具有与此相同的影响:
UPDATE words SET tarih='12'
WHERE tarih = '11';
简单地说,在tarih
为11的所有行中,它会将tarih
更改为12.但是,如果您的words
表包含tarih
为11的多行,并且您希望tarah
仅在其中一行中更改为12,您需要一种方法来告诉数据库它应该更新哪一行。
例如,如果您的words
表包含名为id
的自动编号主键字段,则以下查询应该执行您想要的操作。
UPDATE words SET tarih='12'
WHERE id = DMin("id", "words", "tarih='11'");
尝试采用适合您实际words
表格的类似方法。您实际上不需要使用自动编号字段。可以使用另一种类型的主键字段。如果您的表不包含主键,请考虑添加一个。如果没有主键,您可以使用字段组合来唯一标识应更新的行。但是,如果没有唯一标识每一行的字段组合,您将无法UPDATE
只能进行多次匹配的“第一次”。