Mysql 使用子查询更新记录时出错
我正在子查询的基础上更新记录,但它给了我错误 不能在from子句中指定更新的目标表 我的问题是Mysql 使用子查询更新记录时出错,mysql,sql,subquery,Mysql,Sql,Subquery,我正在子查询的基础上更新记录,但它给了我错误 不能在from子句中指定更新的目标表 我的问题是 UPDATE paymentinfo set customer_id = ( SELECT transation.transactionid FROM paymenttransaction AS transation LEFT JOIN paymentinfo as payment ON (transation.paymentinfoid=payment.payment
UPDATE paymentinfo set customer_id =
(
SELECT transation.transactionid
FROM paymenttransaction AS transation
LEFT JOIN paymentinfo as payment
ON (transation.paymentinfoid=payment.paymentinfoid)
where payment.hash="0b576d33c57484692131471a847eab7c"
)
WHERE hash="0b576d33c57484692131471a847eab7c"
我错在哪里?什么是该问题的完美解决方案我认为使用双子查询方法最简单(在您的案例中):
UPDATE paymentinfo
SET customer_id = (SELECT transactionid
FROM (SELECT t.transactionid
FROM paymenttransaction pt LEFT JOIN
paymentinfo pi
ON t.paymentinfoid = pi.paymentinfoid
WHERE p.hash = '0b576d33c57484692131471a847eab7c'
) t
)
WHERE hash = '0b576d33c57484692131471a847eab7c';
通常,您希望将这些转换为使用JOIN
,但我认为在这种情况下这有点复杂。我认为(在您的情况下)使用双子查询方法是最简单的:
UPDATE paymentinfo
SET customer_id = (SELECT transactionid
FROM (SELECT t.transactionid
FROM paymenttransaction pt LEFT JOIN
paymentinfo pi
ON t.paymentinfoid = pi.paymentinfoid
WHERE p.hash = '0b576d33c57484692131471a847eab7c'
) t
)
WHERE hash = '0b576d33c57484692131471a847eab7c';
通常,您希望将这些表切换为使用
JOIN
,但我认为这种情况有点复杂。在子查询中使用此表进行选择的同时,您也在更新表'paymentinfo'。
请将此查询分为两部分,它将正常工作 在子查询中使用此表进行选择的同时,您也在更新表“paymentinfo”。
请将此查询分为两部分,它将正常工作 我将如何打破。你的意思是我使用两个查询而不是一个查询?我将如何中断。您的意思是我使用两个查询而不是一个查询?请尝试
UPDATE paymentinfo set paymentinfo.customer\u id
it oncretyUPDATE paymentinfo set paymentinfo.customer\u id
it once引用字段时未正确使用表别名。引用字段时未正确使用表别名。