我想从SQL表中获取值列表,然后使用这些值中的每一个运行查询以更新同一表中的其他字段。用另一种语言,我会为此使用for循环,但是我读过,应该避免/在SQL中不支持循环操作。

从概念上讲(显然代码无效),这就是我要实现的目标:

my_list = SELECT item_id
          FROM my_table
          WHERE value = "my_value"
          AND field_id = 1

for x in my_list:
    UPDATE my_table
    SET meta_value = "my_value"
    WHERE field_id = 2
    AND item_id = x


请问使用SQL的正确方法是什么?

最佳答案

您应该能够将表与自身的子集连接起来:

UPDATE my_table t1
INNER JOIN (SELECT item_id FROM my_table WHERE value = "my_value" AND field_id = 1) t2 ON t1.item_id = t2.item_id
SET t1.meta_value = "my_value"
WHERE t1.field_id = 2

09-10 03:18
查看更多