我想从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