【问题标题】:SQLite3 Update join not workingSQLite3更新加入不起作用
【发布时间】:2013-09-19 15:45:17
【问题描述】:

我已经尝试了在这里和其他网站上看到的所有内容。我开始认为用 SQLite3 (V 1.2.2) 和 SQLite (V 3.7.3) 进行更新连接是不可能的。多年来,我一直是 MSSql Server 开发人员。 SQLite 是另一种动物。如果我在 TSQL 中具有 Cursor 功能,我会以这种方式处理它。下面的查询基于几个站点上的建议。这是我最新的尝试,但不起作用。

update alertsettings
   set IP_Desc = (select temp_tbl.Import_Rec
                    from alertsettings,
                         temp_tbl
                   where temp_tbl.IPAddress = alertsettings.IPAddress)

这应该根据我看到的示例使用连接到匹配 IP 的适当描述更新每条记录。所有 IP 都是独一无二的。它确实会更新,但更新后所有记录都具有相同的 IP_Desc。在 576 条记录中,它匹配一条记录。我不确定为什么它应该起作用,因为与正在更新的当前记录没有关系。 “选择”加入“选择”而不是“更新”。

谢谢 - Hostdad

【问题讨论】:

    标签: sqlite


    【解决方案1】:

    当您编写alertsettings.IPAddress 时,该值取自与名称alertsettings 匹配的innermost 表。 在您的查询中,这是内部select 中的alertsettings,它独立于外部update 中的记录。

    您实际上并不想要 join,您希望子查询仅从另一个表中查找单个值:

    update alertsettings
       set IP_Desc = (select Import_Rec
                        from temp_tbl -- no second table here
                       where IPAddress = alertsettings.IPAddress)
    

    【讨论】:

      猜你喜欢
      • 2011-09-24
      • 2012-11-08
      • 2018-07-21
      • 1970-01-01
      • 2019-08-09
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      相关资源
      最近更新 更多