gpt4 book ai didi

mysql - 多对多查询,MySQL

转载 作者:可可西里 更新时间:2023-11-01 07:02:57 24 4
gpt4 key购买 nike

我有 3 个这样的表:

电影:

  • 电影编号(整数)
  • 电影标题(可变字符)
  • movie_runtime (int)
  • movie_releaseYear (int)
  • ...

流派:

  • 流派 ID(整数)
  • 流派名称(可变字符)

电影类型:

  • movieGenre_id (int)
  • movieGenre_movieId (int)
  • movieGenre_genreId (int)

一部电影可以包含多种类型。
我想获取电影名称、运行时间和发行年份及其类型。我怎样才能在单个查询中做到这一点?

我试着这样做:

SELECT u.movie_title, u.movie_runtime, u.movie_releaseYear, a.genre_name 
FROM movieGenres ua
LEFT JOIN movies u ON u.movie_id = ua.movieGenre_filmId
LEFT JOIN genres a ON a.genre_id = ua.movieGenre_genreId
LIMIT 0,10

这会返回类似这样的内容:

罗宾汉 _ 101 _ 2001 _ 冒险
罗宾汉 _ 101 _ 2001 _ 行动
罗宾汉 _ 101 _ 2001 _ 剧情
防火墙 _ 98 _ 2003 _ 行动
防火墙 _ 98 _ 2003 _ 剧情

我不想重复我已经知道的信息。我希望它像这样显示:

罗宾汉 _ 101 _ 2001 _ 冒险 _ Action _ 剧情
防火墙_98_2003_ Action _剧情

请帮我解决这个问题:)

最佳答案

几周前我遇到了这个问题,我的教授给了我一个非常聪明的解决方案:

在子查询中使用 Group_Concat 函数以逗号分隔值的形式获取结果,然后使用 explode/split/任何等效的语言循环遍历 CSV 结果。

http://mahmudahsan.wordpress.com/2008/08/27/mysql-the-group_concat-function/

希望对您有所帮助!这个问题让我沮丧了一段时间,但我认为这是最简单的解决方案。

关于mysql - 多对多查询,MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8129455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com