我需要更新表A上的所有行,其中A.id = B.id和B.code是一些值。
类似的东西:
UPDATE table_a
SET processed = 'Y'
WHERE table_a.id = table_b.id AND
table_b.code = 'ABC';
有谁知道这样做的正确方法?
谢谢!
答案 0 :(得分:0)
以下是针对您的问题的快速解决方法。
UPDATE
(
SELECT
a.processed, a.id
FROM
table_a a,
table_b b
WHERE
a.id = b.id
AND
b.code = 'ABC'
) u
SET u.processed = 'Y'
OR
UPDATE table_a a
SET a.processed = 'Y'
WHERE a.id IN
(SELECT b.id FROM table_b b WHERE b.code = 'ABC')
希望这可能有帮助!
答案 1 :(得分:-1)
您必须先引用第二个表才能使用它。您可以使用子选择:
UPDATE table_a SET processed = 'Y'
WHERE table_a.id = (SELECT table_b.id FROM table_b WHERE table_b.code = 'ABC');
subselect返回table_b中的id列表,满足条件table_b.code =' ABC'。更新将通过subselect列表中的table_a.id影响table_a中的那些行。