【发布时间】:2015-09-08 21:38:34
【问题描述】:
有没有办法使用 WHERE 语句更新这些记录?
UPDATE HRBIQuery SET HRBIQuery.PaySegmentMultiplier = '1.35',
HRBIQuery.PaySegmentMultiplier = '1.25', HRBIQuery.PaySegmentMultiplier = '1.15',
HRBIQuery.PaySegmentMultiplier = '.90', HRBIQuery.PaySegmentMultiplier = '.60',
HRBIQuery.PaySegmentMultiplier = '.40'
WHERE (HRBIQuery.BasePayRangeSegment = 'Below segment 1' AND HRBIQuery.PayGroupCountryDesc = 'France',
HRBIQuery.BasePayRangeSegment = 'S1' AND HRBIQuery.PayGroupCountryDesc = 'France',
HRBIQuery.BasePayRangeSegment = 'S2' AND HRBIQuery.PayGroupCountryDesc = 'France',
HRBIQuery.BasePayRangeSegment = 'S3' AND HRBIQuery.PayGroupCountryDesc = 'France',
HRBIQuery.BasePayRangeSegment = 'S4' AND HRBIQuery.PayGroupCountryDesc = 'France',
HRBIQuery.BasePayRangeSegment = 'S5' AND HRBIQuery.PayGroupCountryDesc = 'France');
谢谢!
【问题讨论】:
-
那行不通。您将同一个字段设置为多个不同的值,而 where 子句是一个明确的语法错误。你的意思是你想用这 6 个不同的值更新 6 个不同的记录?
-
正确,我想根据 6 个不同的条件更新 6 个不同的记录
-
然后运行 6 个单独的更新。单独测试/设置 6 个值会导致非常难看的更新。
-
您可以使用嵌套的 iif 在一个查询中执行此操作,但它非常难看。您还可以在 where 中使用 IN 语句,而不是 5 个单独的 where 条件。您的第二个选项是创建一个自定义函数,将 BasePayRangeSegment 传递给该函数,然后它将根据简单的 case 语句返回适当的值。第三种选择是运行 6 个不同的查询。