【问题标题】:Updating table with another table用另一个表更新表
【发布时间】:2015-09-03 17:58:07
【问题描述】:

我需要从表 compression_query_table 中选择整个列到 Tenth_mile,但 INSERT 删除了该表中已经存在但不在 Compression_query_Table 中的列,我无法弄清楚如何同时在多个列上使用 UPDATE。

【问题讨论】:

  • 您需要添加有关您的问题的更多详细信息,以便我们能够为您提供帮助。 compression_query_table 中有哪些列? Tenth_mile 中的列?现在这些表中有什么数据(只是给我们一个样本)?运行此查询后,示例数据应该是什么样子?
  • 根据您的问题,我什至不确定您现在在问什么。你能详细说明一下吗?
  • 三列是 session_name、state 和 route_number。这些列都存在于两个表中,但仅填充在 compression_query_table 中。我需要将数据从一个表中获取到另一个表中。

标签: sql ms-access sql-update


【解决方案1】:

考虑到您的 session_name 是独一无二的,您可能可以为此编写两个单独的语句:INSERT 和 UPDATE:

更新声明:

UPDATE Tenth_mile
INNER JOIN compression_query_table cq on Tenth_mile.session_name = cq.session_name
SET Tenth_mile.State = cq.State,
    Tenth_mile.route_number = cq.route_number;

插入语句:

INSERT INTO Tenth_mile (session_name, state, route_number) 
SELECT session_name
    ,STATE
    ,route_number
FROM compression_query_table cq
WHERE NOT EXISTS 
    (SELECT tm.session_name
         FROM Tenth_Mile tm
      WHERE tm.session_name = cq.session_name
    );

注意:我的机器上没有安装 MS-Access,所以我没有 一种测试方法。另外,我会在运行插入语句(又名upsert)之前运行更新。

希望这会有所帮助!

【讨论】:

  • 那行不通。插入错误,更新不更新。
  • @BenZeddicus 就像我说的,我没有办法对此进行测试。您能发布您遇到的错误吗?
  • 插入是语法错误,更新没有错误但是tenth_mile表只是空白。
  • 是的,这意味着 tenth_mile 表中没有任何内容需要更新。我刚刚删除了insert 语句中不必要的括号,希望它现在对你有用!
  • 这很有趣。当我尝试这个时: INSERT INTO tenth_mile_copy SELECT state FROM Compression_query_table;它表示状态不在压缩表中,尽管它确实存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 2020-03-18
  • 2011-06-29
相关资源
最近更新 更多