如何使用加入从选择更新

2023-10-09数据库问题
3

本文介绍了如何使用加入从选择更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

如何更新也存在于子查询中的表?我必须分两个阶段完成吗?(创建一个临时表——将选中的数据放入其中,然后更新最终表)

How can I update a table that is also present in a subquery? Do I have to do it in 2 stages? (create a temporary table - put the selected data in it and then update the final table)

我正在尝试使用每个 CTN 的网络标签更新 invoiceLine 表.

I am trying to update the invoiceLine table with the label of the network for each CTN.

最终结果是:

  • 发票行

ctn       network
1234      network1
2345      network2
3456      network1

我有以下表格:

  • 发票行

ctn       network
1234      null
2345      null
3456      null

  • 终端

  • terminal

    ctn       network
    1234      1
    2345      2
    3456      1
    

  • 网络

  • network

    id        label
    1         network1
    2         network2
    

  • 我可以运行一个选择,但我不知道如何通过加入进行更新:

    I can run a select but I'm not sure how to update with a join:

    update invoiceLine 
    inner join terminal on terminal.ctn = invoiceLine.ctn 
    set invoiceLine.network = 
    (
      select network.label 
      from invoiceLine 
      inner join terminal on terminal.ctn = invoiceLine.ctn 
      inner join network on network.id = terminal.network
    ) 
    where invoiceLine.ctn = terminal.ctn
    

    但是 MySQL 抛出一个

    but MySQL throws a

    错误代码:1093.您不能在 FROM 子句中指定要更新的目标表invoiceLine"

    Error Code: 1093. You can't specify target table 'invoiceLine' for update in FROM clause

    推荐答案

    UPDATE invoiceLine
        INNER JOIN terminal
            ON invoiceLine.ctn = terminal.ctn
        INNER JOIN network
            ON terminal.network = network.id
        SET invoiceLine.network = network.label
    

    这篇关于如何使用加入从选择更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

    The End

    相关推荐

    Mysql目录里的ibtmp1文件过大造成磁盘占满的解决办法
    ibtmp1是非压缩的innodb临时表的独立表空间,通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在文件系统磁盘足够的情况下,这个文件大小是可以无限增长的。 为了避免ibtmp1文件无止境的暴涨导致...
    2025-01-02 数据库问题
    151

    按天分组的 SQL 查询
    SQL query to group by day(按天分组的 SQL 查询)...
    2024-04-16 数据库问题
    77

    SQL 子句“GROUP BY 1"是什么意思?意思是?
    What does SQL clause quot;GROUP BY 1quot; mean?(SQL 子句“GROUP BY 1是什么意思?意思是?)...
    2024-04-16 数据库问题
    62

    MySQL groupwise MAX() 返回意外结果
    MySQL groupwise MAX() returns unexpected results(MySQL groupwise MAX() 返回意外结果)...
    2024-04-16 数据库问题
    13

    MySQL SELECT 按组最频繁
    MySQL SELECT most frequent by group(MySQL SELECT 按组最频繁)...
    2024-04-16 数据库问题
    16

    在 Group By 查询中包含缺失的月份
    Include missing months in Group By query(在 Group By 查询中包含缺失的月份)...
    2024-04-16 数据库问题
    12