我必须创建迁移来更新问题图像属性,但是我需要检查其他表中的一些属性,我的模式如下所示:
question {
id,
name,
groupId,
imageUrl -> i need to update this
}
group {
id,
name,
quizId
}
quiz {
id,
name,
type -> where type is 'History'
}我需要从表问题中更新属性imageUrl,例如,在什么情况下,测试类型是'History',我不知道如何在使用UPDATE时加入这个表。我试过这样的方法,但效果不像我想的那样。
UPDATE question SET image_url = 'pathToImage' FROM quiz q WHERE q.type = 'History'发布于 2017-03-31 17:59:55
所以这是我想出的最好的解决方案,它对我的迁移非常有效。
UPDATE question SET image_url = 'https://path_to_image.com' WHERE id IN (SELECT q.id FROM question q
JOIN group AS g ON q.groupi_id = g.id
JOIN quiz AS qu ON qu.id = g.quiz_id
WHERE qu.type = 'Lifestyle')基本上,我用ID在子查询中将image_url更新为所有问题,这是最简单的方法。
发布于 2017-03-29 20:34:14
用这种方式连接三个表:
UPDATE question q
SET image_url = 'pathToImage'
FROM (select g.Id
from group g
JOIN quiz z
ON g.quizID = z.Id
WHERE z.type = 'History') p
ON q.groupId = p.Id;发布于 2017-03-29 20:40:22
尝试:
with cte as (
select q.id qid
from question q
join "group" g on g.id = groupId
join quiz z on z.id = quizId
where type = 'History'
)
UPDATE question q
SET image_url = 'pathToImage'
FROM cte.qid = q.idhttps://stackoverflow.com/questions/43103506
复制相似问题