mysql - 更新从同一查询中的 SELECT 检索的结果

标签 mysql sql

我需要在后续 SELECT 查询的结果中将“payments”表的“payment_status”列更新为“1”,但在单个查询中。请帮助我。

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'

最佳答案

您可以使用 INNER JOIN 执行 UPDATE

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'

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

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'
)

关于mysql - 更新从同一查询中的 SELECT 检索的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23425045/

相关文章:

mysql - 根据另一列中的特定值从一列中选择多个值

php - 在 SQL select 语句中将多个列值合并为单个值

php - 自动更正算法如何在 PHP 和/或 C# 中工作?

sql - 从包含多个分隔值的列中提取一个值

sql - 通过 Hibernate 更新计数器

PHP:SQL 查询从任何表中选择 php 数组提供的列

mysql - 是否可以按索引命名列

MySql查询需要很长时间

sql - 拆分字符串 Teradata SQL

java - 如何将 hibernate 关联映射从 'one to many' 更改为 'many to many'?