【问题标题】:How do you UPDATE twice within the same query?你如何在同一个查询中更新两次?
【发布时间】:2015-09-08 15:45:04
【问题描述】:

我试图在同一个查询中使用两次 UPDATE 来修改我的 TABLE 数据。你能解释一下我是怎么做到的吗?我收到以下代码的语法错误:

UPDATE HRBI SET HRBI.PayGroupLocationPayGroupCountryCode = IIF(HRBI.PayGroupLocationPayGroupCountryCode = 'DEU' AND HRBI.ManagementLevel = 'VP', 'DEU - Exec',
IIF(HRBI.PayGroupLocationPayGroupCountryCode = 'DEU' AND HRBI.ManagementLevel = 'SVP', 'DEU - Exec',
IIF(HRBI.PayGroupLocationPayGroupCountryCode = 'DEU' AND HRBI.ManagementLevel = 'FEL', 'DEU - Exec',
IIF(HRBI.PayGroupLocationPayGroupCountryCode = 'DEU' AND HRBI.ManagementLevel = 'DIR', 'DEU - Exec',
IIF(HRBI.PayGroupLocationPayGroupCountryCode = 'DEU' AND HRBI.ManagementLevel = 'SFL', 'DEU - Exec',
IIF(HRBI.PayGroupLocationPayGroupCountryCode = 'DEU' AND HRBI.ManagementLevel = 'STR', 'DEU - Exec',
IIF(HRBI.PayGroupLocationPayGroupCountryCode = 'DEU' AND HRBI.ManagementLevel = 'EVP', 'DEU - Exec', 
IIF(HRBI.WorkerID = '45' OR HRBI.WorkerID = '46' OR HRBI.WorkerID = '47' OR HRBI.WorkerID = '48' OR HRBI.WorkerID = '49' OR HRBI.WorkerID = '50' OR HRBI.WorkerID = '51', 'DEU - Exec', HRBI.PayGroupLocationPayGroupCountryCode))))))))
UPDATE SET HRBI.PayGroupCountryDesc = IIF(HRBI.PayGroupLocationPayGroupCountryCode = 'DEU - Exec', "Germany - Exec',HRBI.PayGroupCountryDesc);

我尝试在另一个 UPDATE 的末尾添加一个额外的 UPDATE。另外,有没有办法在 Access SQL 中添加评论?谢谢!

【问题讨论】:

  • 不能评论Access SQL,可以通过VBA运行SQL。使用包含现有值的表以及应将连接更改为的值,您可以使生活变得更轻松。
  • 我的所有更新都可以在 SQL 中使用吗?
  • MS Access 在 SQL(查询)中一次只接受一个语句。在 VBA 中,您可以运行多个语句。
  • 知道了。如果我创建 VBA 代码以在模块中使用 DoCmd 运行多个查询。如何在 Access 中运行代码?谢谢!
  • 窗体上的命令按钮是运行 VBA 的常用方法。

标签: ms-access jet-sql


【解决方案1】:

那是疯狂的 SQL。

您的 set 语句实际上是说如果一行中的某些字段符合某些条件,则使 HRBI.PayGroupLocationPayGroupCountryCode 的值 = 'DEU - Exec' 否则保持原样。

“某些标准”应该作为 where 子句来实现!

这样就变成了:

    UPDATE HRBI 
    SET HRBI.PayGroupLocationPayGroupCountryCode = 'DEU - Exec'
    WHERE 
    ( HRBI.PayGroupLocationPayGroupCountryCode = 'DEU' 
      AND 
      HRBI.ManagementLevel IN ('VP', 'SVP', ...etc ...)
    )
    OR
    (    HRBI.WorkerID = '45' OR HRBI.WorkerID = '46' OR HRBI.WorkerID = '47' 
      OR HRBI.WorkerID = '48' OR HRBI.WorkerID = '49' OR HRBI.WorkerID = '50' 
      OR HRBI.WorkerID = '51'
    );

请注意,您可能已经使用 HRBI.WorkerID IN (45,46, .....),但我会留给您执行此操作...

你还需要重写这个:

    UPDATE SET HRBI.PayGroupCountryDesc =         
    IIF(HRBI.PayGroupLocationPayGroupCountryCode = 'DEU - Exec'
        , "Germany -   Exec'
        ,HRBI.PayGroupCountryDesc);

也许像这样嵌入到第一个 SQL 中

    UPDATE HRBI 
    SET HRBI.PayGroupLocationPayGroupCountryCode = 'DEU - Exec'

       ,HRBI.PayGroupCountryDesc =  "Germany -   Exec'

    WHERE 
    ( HRBI.PayGroupLocationPayGroupCountryCode = 'DEU' 
      AND 
      HRBI.ManagementLevel IN ('VP', 'SVP', ...etc ...)
    )
    OR
    (    HRBI.WorkerID = '45' OR HRBI.WorkerID = '46' OR HRBI.WorkerID = '47' 
      OR HRBI.WorkerID = '48' OR HRBI.WorkerID = '49' OR HRBI.WorkerID = '50' 
      OR HRBI.WorkerID = '51'
    );

好吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多