更新从同一Query中的SELECT检索的结果

Dil*_*dra 0 mysql sql

我需要在以下SELECT查询的结果中将"payment"表的"payment_status"列更新为"1",但在单个Query中.请帮我.

SELECT * FROM payments p
INNER JOIN invoice i
ON i.invoice_number = p.invoiceGRN_id
WHERE i.invoice_status = '2' AND i.payment_type = 'Credit'
Run Code Online (Sandbox Code Playgroud)

pau*_*r19 5

你可以做UPDATE一个INNER JOIN

UPDATE payments p
INNER JOIN invoice i
ON i.invoice_number = p.invoiceGRN_id
SET p.payment_status = 1
WHERE i.invoice_status = '2' AND i.payment_type = 'Credit'
Run Code Online (Sandbox Code Playgroud)

或者你可以做这样的事情(效率较低,但更直接地回答你的问题):

UPDATE payments 
SET payment_status = 1 
WHERE id IN (
    SELECT p.id FROM payments p
    INNER JOIN invoice i
    ON i.invoice_number = p.invoiceGRN_id
    WHERE i.invoice_status = '2' AND i.payment_type = 'Credit'
)
Run Code Online (Sandbox Code Playgroud)