使用内连接从 mql table 中删除行
Deleting row from mql table using inner join
我目前正在尝试从我的 table 中删除分数低于 -4 或更低的电影,我想使用 "delete from" 和 "inner join"来自 MySQL。但是我遇到了一个语法错误,我在多个不同的线程上查找过,但 none 似乎可以修复它。
这是我的 tables
+-------------------+
| Tables_in_lab_4_8 |
+-------------------+
| movies |
| reviews |
+-------------------+
这是我的评论 table。您将不需要电影 table.
+-----------+----------+-------+---------------------+
| review_id | movie_id | score | comments |
+-----------+----------+-------+---------------------+
| 1 | 2 | 5 | god-like |
| 2 | 3 | -5 | Everyone died, why? |
| 3 | 4 | 2 | Meh |
| 4 | 5 | 6 | Greak kids movie |
| 5 | 2 | 3 | Could be better |
+-----------+----------+-------+---------------------+
所以显然我想删除 movie_id 3 因为它的分数低于 -4。这是我尝试键入的内容以及随之而来的语法错误。关于我应该做什么的任何建议?
update movies join reviews on reviews.movie_id = movies.movie_id delete review_id from review_id inner join movie_id where score <= -4;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'delete review_id from review_id inner join movie_id where score <= -4' at line 1
如果你想删除至少有一篇评论评分低于-4的电影,你可以使用exists
和一个相关的子查询:
delete from movies
where exists (
select 1
from reviews r
where r.movie_id = movie.movie_id and r.score < -4
)
请注意,这实际上会在 reviews
table 中留下孤立行;你应该确保你有一个启用了 delete cascade
的外键以避免这种情况。
我目前正在尝试从我的 table 中删除分数低于 -4 或更低的电影,我想使用 "delete from" 和 "inner join"来自 MySQL。但是我遇到了一个语法错误,我在多个不同的线程上查找过,但 none 似乎可以修复它。 这是我的 tables
+-------------------+
| Tables_in_lab_4_8 |
+-------------------+
| movies |
| reviews |
+-------------------+
这是我的评论 table。您将不需要电影 table.
+-----------+----------+-------+---------------------+
| review_id | movie_id | score | comments |
+-----------+----------+-------+---------------------+
| 1 | 2 | 5 | god-like |
| 2 | 3 | -5 | Everyone died, why? |
| 3 | 4 | 2 | Meh |
| 4 | 5 | 6 | Greak kids movie |
| 5 | 2 | 3 | Could be better |
+-----------+----------+-------+---------------------+
所以显然我想删除 movie_id 3 因为它的分数低于 -4。这是我尝试键入的内容以及随之而来的语法错误。关于我应该做什么的任何建议?
update movies join reviews on reviews.movie_id = movies.movie_id delete review_id from review_id inner join movie_id where score <= -4;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'delete review_id from review_id inner join movie_id where score <= -4' at line 1
如果你想删除至少有一篇评论评分低于-4的电影,你可以使用exists
和一个相关的子查询:
delete from movies
where exists (
select 1
from reviews r
where r.movie_id = movie.movie_id and r.score < -4
)
请注意,这实际上会在 reviews
table 中留下孤立行;你应该确保你有一个启用了 delete cascade
的外键以避免这种情况。