Sql 使用另一个表更新表

Sql 使用另一个表更新表,sql,ms-access,sql-update,Sql,Ms Access,Sql Update,我需要将整个列从表compression\u query\u table选择到第十英里,但INSERT会删除该表中已存在但不在compression\u query\u table中的列,并且我无法确定如何同时对多个列使用UPDATE 考虑到您的session\u名称是唯一的,您可能需要为此编写两条单独的语句:INSERT和UPDATE: 更新语句: UPDATE Tenth_mile INNER JOIN compression_query_table cq on Tenth_mile.ses

我需要将整个列从表compression\u query\u table选择到第十英里,但INSERT会删除该表中已存在但不在compression\u query\u table中的列,并且我无法确定如何同时对多个列使用UPDATE

考虑到您的
session\u名称
是唯一的,您可能需要为此编写两条单独的语句:
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
    );
插入语句:

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,因此我没有 一种测试方法。另外,我会在运行insert语句之前运行update(也称为
upsert


希望这有帮助

您需要添加有关问题的更多详细信息,以便我们能够帮助您。压缩查询表中有哪些列?第十英里的纵队?现在这些表中有哪些数据(请给我们一个示例)?运行此查询后,示例数据应该是什么样子的?基于您的问题,我甚至不确定您现在在问什么。你能详细说明一下吗?三列是会话名称、状态和路由号。这些列都存在于两个表中,但仅在压缩\查询\表中填充。我需要将数据从一个表放到另一个表中。这不起作用。插入错误,更新不更新。@BenZeddicus就像我说的,我没有办法测试这个。您可以发布您收到的错误吗?插入是一个语法错误,更新没有错误,但是第十英里表是空的。是的,这意味着该
tenth_mile
表中没有要更新的内容。我刚刚删除了
insert
语句中不必要的括号,希望它现在对您有用!这很有趣。当我尝试这样做时:插入到第十英里复制从压缩查询表中选择状态;它说状态不在压缩表中,即使它确实在压缩表中。