使用多个值更新查询

时间:2011-01-02 14:38:12

标签: ms-access

我想在MS Access 2003中编写更新查询。我有一个名为product_code的字段。

  • 如果产品代码是(介于110和752之间)或(介于910和1124之间),我想更新产品代码= 15.
  • 如果产品代码是(在1210和1213之间)或(1310和1423),我想分配产品代码= 16.
  • 如果产品代码是其他值,我将分配18,依此类推

我认为我不能使用CASE语句,因为我有许多值需要更新。我尝试使用多个UPDATE / SET语句,但它不起作用。

2 个答案:

答案 0 :(得分:3)

您可以创建一个临时表来保存您的范围和值。将其称为TableB,包含3个字段LowId,HighId,NewId

UPDATE TableA SET TableA.ProductID=TableB.NewId
WHERE TableA.ProductID>=TableB.LowID AND TableA.ProductID<=TableB.HighId

答案 1 :(得分:2)

您可以使用嵌套的IIF语句来实现此目的:

UPDATE  Products
SET Product_Code = IIF(
    (Product_Code BETWEEN 110 and 752) or 
        (Product_Code BETWEEN 910 AND 1124), 
    15,  
    IIF(
        (Product_Code BETWEEN 1210 and 1213) or 
        (Product_Code BETWEEN 1310 AND 1423), 
        16, 18
       )
    )

如果您的产品代码介于110和752或910和1124之间,它会将Product_Code更新为15.否则,它会检查您的代码是否介于1210和1213或1310和1423之间,其中它使用的情况为16.否则,它使用18。

注意:如果要更新这样的ID,请确保在运行此数据库之前备份数据库或至少是表,因为之前的值将被覆盖。< / p>