我有一个电影表和一个类型表,以及电影和类型之间的关系(多对多)(代表电影的类型)我想得到所有的电影,他们的类型包括一个类型列表,所以我写了这个查询:
SELECT movie.name , JSON_ARRAYAGG(genre.name) FROM movie
INNER JOIN movie_genre ON movie.id = movie_genre.movie_id
INNER JOIN genre ON genre.id = movie_genre.genre_id
GROUP BY movie.id;
这将返回一个表的名称和类型的电影列表。我想检查如果列表(spring Boot - jdbc会在查询中放入-例如-(“Action”,“Drama”))包含在JSON_ARRAYAGG中,并且必须获得具有这些类型的所有电影。如何在一个简单而有效的查询中检查一个列表是否是另一个列表的子集而不使用Tricks。
谢谢Idan。
2条答案
按热度按时间vltsax251#
要检查每部电影的类型JSON数组中是否包含类型列表,可以使用MySQL中的
JSON_CONTAINS_ALL()
函数xytpbqjk2#
如果你只想过滤那些有你的类型列表的电影,你可以只过滤类型,然后过滤所有有类型行数的电影
像这样: