8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

SQL 从内连接更新

tmdavison 2月前

30 0

我正在使用 Microsoft Access。如果此查询: (SELECT FERMENT.FermentIdFROM FERMENTINNER JOIN [BELGIUM BEER]ONFERMENT.FermentName = [BELGIUM BEER].FermentId ORDER BY [BELGIUM BEER].BeerId) a r...

我正在使用微软 Access。

如果有这个查询:

(SELECT FERMENT.FermentId
FROM FERMENT
INNER JOIN [BELGIUM BEER]
ON
FERMENT.FermentName = [BELGIUM BEER].FermentId ORDER BY [BELGIUM BEER].BeerId) a

返回 FermentId,如何使用该列更新不同的表?

例子:

UPDATE EXAMPLETABLE
SET EXAMPLETABLE.FermentId = a.FermentId
FROM a
(SELECT FERMENT.FermentId
FROM FERMENT
INNER JOIN [BELGIUM BEER]
ON
FERMENT.FermentName = [BELGIUM BEER].FermentId ORDER BY [BELGIUM BEER].BeerId) a
帖子版权声明 1、本帖标题:SQL 从内连接更新
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由tmdavison在本站《ms-access》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 假设子查询返回多个值,则需要第二个键来连接(JOIN)新值和要更新的表(EXAMPLETABLE)。

    在这种情况下我会尝试这样的事情:

    UPDATE T 
    SET    T.FERMENTID = A.FERMENTID 
    FROM   EXAMPLETABLE AS T 
           INNER JOIN (SELECT FERMENT.FERMENTID, 
                              FERMENT.OTHERID 
                       FROM   FERMENT 
                              INNER JOIN [BELGIUM BEER] 
                                      ON FERMENT.FERMENTNAME = 
                                         [BELGIUM BEER].FERMENTID 
                       ORDER  BY [BELGIUM BEER].BEERID) AS A 
                   ON A.OTHERID = T.OTHERID 
    

    如果不是这种情况并且子查询返回单个值,请尝试如下操作:

    UPDATE EXAMPLETABLE 
    SET    T.FERMENTID = (SELECT FERMENT.FERMENTID
                          FROM   FERMENT 
                                 INNER JOIN [BELGIUM BEER] 
                                         ON FERMENT.FERMENTNAME = 
                                            [BELGIUM BEER].FERMENTID 
                          ORDER  BY [BELGIUM BEER].BEERID)
    

    请注意,在这种情况下,您需要保证子查询永远不会返回多行!

  • 子查询返回 750 条记录,exampletable 包含 750 条记录。我基本上想用子查询中的 750 条记录来更新 exampletable.FermentId。

  • 不确定 EXAMPLETABLE 与您的数据有什么关系,但一般来说。

    在 Access 中,SET 部分位于连接之后,同时跳过选择部分和排序。应该是这样的

    UPDATE FERMENT
    INNER JOIN ([BELGIUM BEER]  ON FERMENT.FermentName = [BELGIUM BEER].FermentId) 
    SET EXAMPLETABLE.FermentColumn = a.FermentColumn
    

    如果它不起作用,请尝试在查询生成器中构建连接

  • 无需定义两个表之间的关系。答案 10(Arnoldiusss)几乎是正确的,并且是迄今为止最易理解和最简短的解决方案。并且执行速度最快。但是示例代码是错误的。下一个代码来自我的一个应用程序,在 MS ACCESS 2013 中运行良好。

        UPDATE table1 T1 
        INNER JOIN table2 T2 
        ON T2.Id = T1.Id
        SET T1.myField = T2.myField;
    

    对于“比利时啤酒案”(我喜欢这个表达;-),它将是:

        UPDATE FERMENT AS T1
        INNER JOIN [BELGIUM BEER] AS T2 ON T1.FermentName = T2.FermentId 
        SET T1.FermentColumn1 = T2.FermentColumn1;
    
返回
作者最近主题: