我正在尝试根据同一个表和另一个表上的内部联接的值来更新表。
以下是查询: -
update coin_txn_normalization cn
SET cn.is_merchant_pay_rel='H'
where cn.coin_txn_id IN(
SELECT ctn.coin_txn_id
FROM hold h
INNER JOIN coin_txn_normalization ctn
ON h.txn_id = ctn.coin_txn_id
);
我收到以下错误
SQL Error (1093): Table 'cn' is specified twice, both as a target
for 'UPDATE' and as a separate source for data
Affected rows: 0 Found rows: 0 Warnings: 0 Duration for 0 of 1 query: 0.000 sec.
我该如何解决这个错误。如果需要其他任何内容,请告诉我。
答案 0 :(得分:2)
如您所知,MySQL并未在where
或set
条款中引用所有正在更新(或删除)的表格。
在您的情况下,这很容易解决:
update coin_txn_normalization cn
set cn.is_merchant_pay_rel = 'H'
where cn.coin_txn_id in (select h.txn_id from hold);
无论如何,这是一个更简单的版本。如果hold
中没有多个匹配项,那么join
也是合适的:
update coin_txn_normalization cn join
hold h
on h.txn_id = cn.coin_txn_id
set cn.is_merchant_pay_rel = 'H' ;