【问题标题】:SQL MS Access Conditional Update Query Referencing Other Tables引用其他表的 SQL MS Access 条件更新查询
【发布时间】:2013-12-14 21:34:35
【问题描述】:

我开始接触 SQL,特别是因为我现在正在处理的问题,我知道如何在 Excel 中使用参考 Countif 公式完成任务,但因为我正在处理近 100 万条记录,Excel 一直在轰炸我,而 SQL 似乎是完成任务的更有效方法。

背景:

基本上我有一个这样的“汇总”表:

 ID_summary(ID_num, exist_2009, exist_2010, exist_2011, exist_2012)

然后我有 4 个表,每个表对应于 2009、2010、2011 和 2012,每个表中只有两列 ID_num 和 date。

2009(ID_num,date)

ID_summary 表包含四年表中存在的所有唯一 ID 的完整列表。我通过四年表的联合创建了这个列表。

问题:

如果 ID 号出现在相应的年份表中,我想为每条记录编写一个更新查询(?),用“TRUE”或“1”填充每个“exists_20XX”列的 ID_summary 表。

例如,如果 ID 002 仅出现在 2009 年和 2012 年,则汇总表中 ID 002 的行应如下所示

ID_summary(ID_num, exist_2009, exist_2010, exist_2011, exist_2012)
ID_002,TRUE,FALSE,FALSE,TRUE

我已经完成了类似的基本查询来进行一些数据清理并获得了成功的结果,但它总是只是引用同一个表中的其他字段来确定是否应该重新编码一个字段。

我正在使用 MS Access 2010。

非常感谢任何帮助!

【问题讨论】:

    标签: sql database ms-access sql-update


    【解决方案1】:

    好的,我检查了这里。

    http://msdn.microsoft.com/en-us/library/office/bb221186%28v=office.12%29.aspx

    似乎语法可能略有不同
    MS Access 比 SQL Server 好。

    按以下顺序尝试这两个:

    update ID_summary
    set exist_2009 = 0 -- false
    
    update
    ID_summary ids
    left join table_2009 t on ids.ID_num = t.ID_num
    set
    ids.exist_2009 = 1 -- true
    where
    (t.ID_Num is not null)
    

    如果是 SQL Server,则需要
    使用稍微不同的语法。
    但我们在这里讨论的是 MS Access。

    update ids
    set
    ids.exist_2009 = 0 -- false
    from
    ID_summary ids
    
    update ids
    set
    ids.exist_2009 = 1 -- true
    from
    ID_summary ids
    left join table_2009 t 
    on ids.ID_num = t.ID_num
    where
    (t.ID_Num is not null)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      相关资源
      最近更新 更多