当前位置: 首页 > 面试题库 >

如何通过加入选择进行更新

严言
2023-03-14
问题内容

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

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

最终结果将是:

  • invoiceLine
ctn       network
1234      network1
2345      network2
3456      network1

我有以下表格:

  • invoiceLine

    ctn network
    1234 null
    2345 null
    3456 null

  • terminal

    ctn network
    1234 1
    2345 2
    3456 1

  • network

    id label
    1 network1
    2 network2

我可以运行一个select,但是我不确定如何通过联接进行更新:

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抛出一个

错误代码:1093。您无法在FROM子句中指定目标表’invoiceLine’进行更新


问题答案:

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



 类似资料:
  • 问题内容: 我想更新一个表以指示某些行是其他行的父表,因此我在表中添加了“父代”列。以下查询查找所有父母: 但是当我尝试修改该语法以进行更新时,它不起作用: 我得到: 请注意,第7行第28列是“ SET”行的结尾。 问题答案: Oracle不支持语句中的子句。 用这个:

  • 我有一个问题是通过元素的选择器获取元素。 我纠结的一个页面是:http://html5.haxball.com/。我成功的是登录,但这是一种黑客,因为我使用的事实,我需要填写的字段已经被选中。 在输入nick并进入大堂后,我想点击‘创建房间’按钮。其选择器:body>div>div>div>div>div>div>div.buttons>button:nth-child(3) 运行这样的代码后,我

  • 我需要使用array_agg和空间查找的结果更新Postgres表中的几千行。 查询需要获取父表的几何图形,并返回另一个表中匹配行 ID 的数组。它可能不返回任何 ID 或可能返回 2-3 个 ID。 我尝试过使用UPDATE FROM,但似乎无法将SELECT的父表geom列传递给子查询。我看不到在两个表之间进行JOIN的任何方法。 以下是我目前的情况: 我得到的错误是: 这可能吗? 非常感谢,

  • 本文向大家介绍如何进行特征选择?相关面试题,主要包含被问及如何进行特征选择?时的应答技巧和注意事项,需要的朋友参考一下 去除方差较小的特征

  • 问题内容: 这是表结构 我需要一条声明,列出从最近输入的每条消息,我不知道如何执行此操作。谁能指出我正确的方向?提前谢谢。 问题答案: 应该这样做:

  • 我有以下三张桌子。请原谅表名,它们是通用数据库结构命名转换的一部分。 我想编写一个查询,使用匹配的值将值插入多对多表:tbl_331_to_tbl_320_字段。如果我使用DO NOTHING参数,这是有效的。 此语句用于插入找到匹配的值。 但是我想使用DO UPDATE,所以如果有冲突,它将更新第二个id(S.id)。例如,如果我将S.field_3中的值更改为与新ID匹配的其他值,我想更新这个