如何使用选择查询会导致更新查询?

问题描述 投票:1回答:1

我有两张桌子:films(id,marksNum) marks(id,film_id,mark)我想在films.marksNum中保存每部电影的标记数量。我的尝试是:

UPDATE films
SET marksNum=
(
SELECT  count(id)
FROM marks
WHERE marks.film_id=films.id
GROUP BY marks.film_id
)
WHERE films.id=marks.film_id

但我得到一个错误:no such column: marks.film_id我做错了什么?先感谢您!

sqlite
1个回答
0
投票

嗯,这不是一个优雅的解决方案,但任何方式:1)

CREATE TABLE `grp_marks` ( `film_id` INTEGER, `marks_num` INTEGER )

2)

INSERT INTO grp_marks(film_id,marks_num)
SELECT film_id,count(id)
FROM marks
GROUP BY film_id

3)

UPDATE films
SET marksNum=
(
SELECT marks_num
FROM grp_marks
WHERE (film_id=films.id)
)
WHERE EXISTS
(SELECT * FROM grp_marks WHERE grp_marks.film_id=films.id
)
© www.soinside.com 2019 - 2024. All rights reserved.