如何将更新与select ...一起使用以更新mysql中的更新

时间:2019-02-19 11:11:23

标签: mysql select sql-update

我有两个MySql表tableA和tableB,tableA中的主键“ id”用作tableB中的外键“ parent_id”。我想使用select ...进行更新来更新tableB中的单行,以便其他用户在事务未结束时无法访问它。我的问题是-如何在一个查询中正确更新所选行?这是我的示例代码:

START TRANSACTION;
SELECT b.reserved, b.owner FROM tableB b, tableA a 
WHERE b.parent_id = a.id AND a.guid ='5344a990-fedf-4deb-a114-0d5d6a3ba180' FOR UPDATE;
UPDATE tableB SET...;
COMMIT;

谢谢!

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。 请看一下:

以下是查询内容的示例:

START TRANSACTION;
# Lock table using `FOR UPDATE`
SELECT 
  b.reserved, 
  b.owner 
FROM 
  tableB b,
  tableA a 
WHERE 
  b.parent_id = a.id 
  AND a.guid ='5344a990-fedf-4deb-a114-0d5d6a3ba180' 
FOR UPDATE;

# Update query
UPDATE 
  tableA 
SET 
  tableA.column1=(
    SELECT 
      b.reserved 
    FROM 
      tableB b, 
      LEFT JOIN tableA a ON a.id=b.id 
    WHERE 
      b.parent_id = a.id 
      AND a.guid ='5344a990-fedf-4deb-a114-0d5d6a3ba180'
  ) 
WHERE ... 
LIMIT 1;  

COMMIT;

希望这会有所帮助