【发布时间】:2021-04-20 12:41:46
【问题描述】:
我有下面这句话,返回错误
where 子句中的未知列目标。ID_TARGET
我找不到任何解决方案。你们能帮忙吗? 建议使用子查询提供的值(0 或 1)更新每一行的“sw_automatic”
update bt_pry_targets targets
set targets.sw_automatic = (
(
SELECT (CASE WHEN Task.ID_TP_TASKS_GROUPS = 694 THEN '0' ELSE '1' END) AS TYPE_TASK,
Task.ID_TASK FROM bt_tasks AS Task
INNER JOIN bt_pry_cmp_workflows AS BtCmpWorkflows ON (Task.ID_PRY_CMP_WORKFLOW = BtCmpWorkflows.ID_PRY_CMP_WORKFLOW)
INNER JOIN bt_pry_components AS PryComponent ON (PryComponent.ID_PRY_COMPONENT = BtCmpWorkflows.ID_PRY_COMPONENT )
INNER JOIN bt_components AS Component ON (PryComponent.ID_COMPONENT = Component.ID_COMPONENT)
INNER JOIN bt_pry_targets AS PryTarget ON (PryComponent.ID_TARGET = PryTarget.ID_TARGET)
INNER JOIN bt_flows AS Flows ON (Flows.ID_FLOW = Task.ID_FLOW)
WHERE Flows.SW_END_DEPENDENCE = 1
AND PryTarget.ID_TARGET = targets.ID_TARGET
GROUP BY Task.ID_TASK) )
where targets.sw_automatic is null;
【问题讨论】:
-
。 .你的代码不起作用。我建议你问一个描述你想要完成的问题的问题;提供样本数据和期望的结果。简化问题,因为您可能只需要 2 或 3 个表格就可以解决问题。那么有人帮助你是可行的。
-
我们看不到您的架构,因此我们不知道 target.ID_TARGET 是否真的存在,如果您拼写错误或其他问题。
-
我简化了查询。我想要实现的是,使用子查询提供的值更新表 bt_pry_targets 的每一行。 ID_TARGET 是表的PK
-
您的子查询选择了两列,
TYPE_TASK和ID_TASK。SET将失败。ID_TARGET是否存在于bt_pry_targets表中?与其使用子查询,不如使用标准的UPDATE语法重写此查询可能更容易(查询引擎也更有效)。
标签: mysql sql select sql-update subquery