我有一个返回正确值的查询:
SELECT cnl.id cID,
snl.id sID,
cnl.fk_lei cnl,
sid.lei sid,
cnl.fk_cnty_id cCid,
snl.fk_cnty_id sCid,
sec.id secID,
sid.id sidID
FROM cici.name_loc cnl
INNER JOIN se4.name_loc snl
ON snl.legal_name = cnl.legal_name
AND snl.fk_cnty_id = cnl.fk_cnty_id
INNER JOIN se4.sym_exch_cnty sec
ON sec.id = snl.fk_sec_id
INNER JOIN se4.identifiers sid
ON sid.fk_sec_id = sec.id
AND sid.lei = 'NA'
WHERE cnl.legal_name = 'Apple Inc.'
+------+------+----------+-----+------ +-----+-------+--------+ | 身份证 | 标识 | cnl | 席位 | cCid | SCID | 秒ID | 标识号 | +------+------+----------+-----+------ +-----+-------+--------+ | 2010 | 3104 | HWUPKR0MPOU8FGXBT394 | 不适用 | 233 | 233 | 13756 | 9722 | +------+------+----------+-----+------ +-----+-------+--------+
我想修改它,以便我可以更新查询中使用的表中的字段。因此,在上述结果中,字段“sid”将从“NA”更新为“HWUPKR0MPOU8FGXBT394”
确切地说,“标识符”表有一个“sid.lei”列,需要从“NA”更改为“cnl.fk_lei”table.column 中的值 - 仅当上述选择中的所有条件都为遇见了。我只想更改一条记录,而不是表中的所有记录。
我尝试了几条路线,它们都给出了相同的错误:错误 1062 (23000): Duplicate entry 'HWUPKR0MPOU8FGXBT394-NA-NA-NA-1-1' for key 'mk_ident__6fks'
这告诉我更新出错了。
这是我尝试的更新之一:
UPDATE identifiers AS b
INNER JOIN cici.name_loc cnl
ON cnl.legal_name = 'Apple Inc.'
INNER JOIN se4.name_loc snl
ON snl.legal_name = cnl.legal_name
AND snl.fk_cnty_id = cnl.fk_cnty_id
INNER JOIN se4.sym_exch_cnty sec
ON sec.id = snl.fk_sec_id
SET b.lei = cnl.fk_lei
WHERE cnl.legal_name = 'Apple Inc.'
在这种情况下,我只尝试更新一条记录。但是,我有数百条记录,其中 snl.legal_name = cnl.legal_name,我需要使用 cnl.fk_lei 中的数字更新所有记录。
任何想法都非常感谢。谢谢!