2012-12-30 73 views
1

我想更新MS Access 2010中的一个选定列。但是当我使用下面的更新查询
MS Access更新全部tarih列值。当我只写下面的Select查询时,它的工作原理是正确的。但是当我在嵌套更新查询中使用它时更新查询更新全部为tarih列值。我能做什么?MS Access SQL更新第一列表查询更新所有未选择的列

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

回答

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

+0

非常感谢。那是一个好主意。但DMIN不MS Access 2010中我使用SET tarih此查询UPDATE话= '12' WHERE ID =(SELECT MIN(ID)从文字WHERE tarih = '11' )工作 – cejoseph