mysql - 在一个查询中连接多行

标签 mysql performance

我有两个具有以下设计的表格

  • 电影:ID、名称
  • 流派:movie_id、流派

每部电影可以有多个类型。

我希望列出所有电影及其类型,因此我会得到如下内容:

name1 genre1,genre2,genre3
name2 genre2,genre6,genre8

等等

我希望能够使用单个查询来完成此操作(我使用的是 MySQL 5.6)。

我考虑过使用连接,但无法使其真正发挥作用。有什么想法吗?

最佳答案

您的查询

select m.name, group_concat(g.genre) from movies m, genres g
where m.id = g.movie_id group by m.name;

这里是一些示例数据:

mysql> create table movies (id int, name varchar(100));
Query OK, 0 rows affected (0.04 sec)

mysql> create table genres (movie_id int, genre varchar(100));
Query OK, 0 rows affected (0.02 sec)

mysql> insert into movies values (1, 'Terminator');
Query OK, 1 row affected (0.01 sec)

mysql> insert into movies values (2, 'Lord of the Rings');
Query OK, 1 row affected (0.01 sec)

mysql> insert into genres values (1, 'action');
Query OK, 1 row affected (0.01 sec)

mysql> insert into genres values (1, 'sci-fi');
Query OK, 1 row affected (0.01 sec)

mysql> insert into genres values (2, 'fantasy');
Query OK, 1 row affected (0.00 sec)

mysql> insert into genres values (2, 'adventure');
Query OK, 1 row affected (0.01 sec)

这是查询的输出:

mysql> select m.name, group_concat(g.genre) from movies m, genres g where m.id = g.movie_id group by m.name;
+-------------------+-----------------------+
| name              | group_concat(g.genre) |
+-------------------+-----------------------+
| Lord of the Rings | adventure,fantasy     |
| Terminator        | sci-fi,action         |
+-------------------+-----------------------+

关于mysql - 在一个查询中连接多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23204418/

相关文章:

php - MySql - 从一个数据库更新到另一个数据库

ruby-on-rails - 追踪导致 rspec 测试缓慢的原因

java - 在java中获取类未找到异常

performance - 两个未排序的单链表到一个已排序的单链表

Ruby 在虚拟机上运行缓慢取决于虚拟化引擎

c# - 正则表达式匹配需要很长时间才能执行

java - 在java中查找模式匹配单词的最快方法

mysql - 测试中的命令导致测试无法完全退出

Mysql2::错误:表不存在:显示来自 `sessions` 的完整字段

java - 我如何在我的java程序中使用随WAMP服务器安装的MySQL