Mysql 更新计算值时返回NULL的联接嵌套子查询
我试图解决“您不能在FROM子句中指定更新的目标表”MySQL错误,这意味着我有一个嵌套的子查询(临时表)。注意,在我进入实际的Mysql 更新计算值时返回NULL的联接嵌套子查询,mysql,sql,Mysql,Sql,我试图解决“您不能在FROM子句中指定更新的目标表”MySQL错误,这意味着我有一个嵌套的子查询(临时表)。注意,在我进入实际的更新之前,我正在尝试让选择工作 我得到的是一个分类账表,在该表中,我试图使用活动单位(该行的开头)和活动单位中的每一个额外调整(同一表中有一个付款行和多个调整行,通过佣金ID和计划编号关联)查找关联行的计算单位总数。它们按month\u num分组。因此,如果它是active\u units=18,并且有三个调整行,一个是active\u units\u chg=-2,
更新之前,我正在尝试让选择
工作
我得到的是一个分类账表,在该表中,我试图使用活动单位
(该行的开头)和活动单位中的每一个额外调整(同一表中有一个付款行和多个调整行,通过佣金ID和计划编号关联)查找关联行的计算单位总数。它们按month\u num
分组。因此,如果它是active\u units=18
,并且有三个调整行,一个是active\u units\u chg=-2
,那么我应该以18+-2=16
结束
当我这样做时:
SELECT
active_units
, active_units_chg
, active_units_total
, CRM_commission_payments.active_units + (
SELECT SUM(active_units_chg)
FROM CRM_commission_payments AS cp
WHERE cp.CRM_commissions_item_id = CRM_commission_payments.CRM_commissions_item_id
AND cp.schedule_a_no = CRM_commission_payments.schedule_a_no
AND cp.month_num = CRM_commission_payments.month_num
AND cp.item_active = 1
) AS active_units_cal1
FROM CRM_commission_payments
WHERE CRM_commission_payments.payment_type = 'payment'
AND CRM_commission_payments.CRM_quotes_item_id = 2457
active\u units\u cal1
对于该行是正确的。但是,当我使用嵌套的JOIN
'd子查询执行此操作时,对于active\u units\u calc.calc\u chg
,我会得到NULL
:
SELECT
active_units
, active_units_chg
, active_units_total
, CRM_commission_payments.active_units + (
SELECT SUM(active_units_chg)
FROM CRM_commission_payments AS cp
WHERE cp.CRM_commissions_item_id = CRM_commission_payments.CRM_commissions_item_id
AND cp.schedule_a_no = CRM_commission_payments.schedule_a_no
AND cp.month_num = CRM_commission_payments.month_num
AND cp.item_active = 1
) AS active_units_cal1
, active_units_calc.calc_chg
FROM CRM_commission_payments
LEFT JOIN (
SELECT
source.calc_chg
, source.CRM_commissions_item_id
, source.schedule_a_no
, source.month_num
FROM CRM_commission_payments AS cp1
INNER JOIN (
SELECT
SUM(active_units_chg) AS calc_chg
, cp.CRM_commissions_item_id
, cp.schedule_a_no
, cp.month_num
FROM CRM_commission_payments AS cp
WHERE cp.item_active = 1
) AS source
WHERE source.CRM_commissions_item_id = cp1.CRM_commissions_item_id
AND source.schedule_a_no = cp1.schedule_a_no
AND source.month_num = cp1.month_num
) AS active_units_calc ON (
active_units_calc.CRM_commissions_item_id = CRM_commission_payments.CRM_commissions_item_id
AND active_units_calc.schedule_a_no = CRM_commission_payments.schedule_a_no
AND active_units_calc.month_num = CRM_commission_payments.month_num
)
WHERE CRM_commission_payments.payment_type = 'payment'
AND CRM_commission_payments.CRM_quotes_item_id = 2457
我做错了什么?由于顶部按预期工作,如果拉出左连接查询,它是否也会返回预期结果?它似乎是挂起的地方。不管联接子查询是否存在,字段子查询都可以工作。连接子查询是我真正需要的工作。