我有两个桌子。我需要两个字段来更新。 它们通过外键相互连接。我想通过使用内部联接来更新在这两个表中找到的字段。
UPDATE cert
SET cert.status = 1, doc.status = 1
FROM certificates cert
INNER JOIN documents doc ON doc.data_id = cert.certificate_id
WHERE cert.status = 0 AND cert.user_id = _expert_id AND doc.data_type = 'CERTIFICATE';
我上面提到的代码仅允许我更新证书表中的状态字段。另外,我想更新文档表中的字段
答案 0 :(得分:2)
也许这会有所帮助:
aaaaa---__
aaaaa-b-__
aaaaa---__
--------__
--c-----__
--------__
__________
__________
使用WITH cert_update AS (
UPDATE certificates cert
SET status = 1
FROM documents doc
WHERE doc.data_id = cert.certificate_id
AND cert.status = 0
AND cert.user_id = '2' -- your "_expert_id"
AND doc.data_type = 'CERTIFICATE'
RETURNING certificate_id
)
UPDATE documents doc
SET status = 1
FROM cert_update cert
WHERE doc.data_id = cert.certificate_id
AND doc.data_type = 'CERTIFICATE';
子句( CTE ),您可以在一个查询中进行多次更新。第一个返回更新后的WITH
,可在第二个查询中使用。