当前位置: 首页 > 知识库问答 >
问题:

使用group_concat和左联接选择多选值

汲灿
2023-03-14

所以我正在使用PHP和MySQL制作一个简单的电影数据库。我有两张桌子:

电影

ID  | Title           | Genre    
-----------------------------
1   | The Dark Knight | 1,2
2   | Man of steel    | 3,4
3   | SpiderMan       | 5,6

电影类型

ID  | genre    
------------------------
1   | Action
2   | Adventure
3   | Animation
4   | Biography
5   | Comedy
6   | Crime
SELECT movies.*, GROUP_CONCAT(moviesgenre.genre) as genres
FROM movies    
LEFT JOIN moviesgenre ON movies.genre = moviesgenre.id
ID  | Title           | Genres  | Genres    
-------------------------------------------
1   | The Dark Knight | 1,2     | Action,Animation,Comedy

ID  | Title           | Genres  | Genres    
-------------------------------------------
1   | The Dark Knight | 1,2     | Action,Adventure
2   | Man of steel    | 3,4     | Animation,Biography
3   | SpiderMan       | 5,6     | Comedy,Crime


共有1个答案

葛和志
2023-03-14

您可以使用MySQL函数FIND_IN_SET来实现您想要的。您还需要按电影对查询进行分组。

我设置了这个SQL Fiddle来演示如何实现它。

您的查询最终将显示如下所示:

SELECT movies.*, GROUP_CONCAT(moviegenres.genre) AS genre
FROM movies    
LEFT JOIN moviegenres ON FIND_IN_SET(moviegenres.id, movies.genre)
GROUP BY movies.id
 类似资料:
  • 问题内容: 我很好奇为什么需要使用,因为我们可以使用逗号选择多个表。 和使用逗号选择多个表之间有何区别? 哪一个更快? 这是我的代码: …和: 问题答案: 首先,要完全等同,应该已经编写了第一个查询 这样mw。和nvs。一起产生与第二个查询的单数*相同的集合。您编写的查询可以使用INNER JOIN,因为它包括对nvs.correct的过滤器。 一般形式 查找基于条件的TableB记录。如果失败,

  • 我想从short_name(国家名称)、name(州表)或region_name的任何可用数据中选择post_id。对region_name而不是short_name(国家名称),name(州表)执行以下查询,结果为真。 请告诉我,我哪里弄错了!

  • 问题内容: 给定以下示例表架构 客户表 发票表 目的是选择InvoiceID值为10和20(非OR)的所有客户。因此,在此示例中,将返回带有CustID = 1和2的客户。 您将如何构造SELECT语句? 问题答案: 使用: 关键是需要计数等于子句中参数的数量。 的使用是在对帐务编号和发票编号的组合没有唯一约束的情况下- 如果没有重复的机会,则可以从查询中省略DISTINCT:

  • 问题内容: 我有一个希望很简单的MySQL查询问题,在深夜使我难以理解。我正在尝试执行SELECT,该SELECT计算一组数据(订单)的实例数量,并通过在订单本身上方几层的父级中存在的值对这些实例进行分组。 例如: 我正在寻找的是以下附近的东西: SELECT count(orders.id),categoryId来自订单,类别(1,2,3)中的WHERE order.customer_id,GR

  • 希望能澄清一下我什么时候应该使用和。这可能不是节奏问题,但也许我错过了一些关于Golang的知识。 对于我认为基本思想是等待通道的下一个输出。不完全确定什么是可以。 例如,在cadence示例中,< code>local_activity链接并粘贴在下面: 我们不使用任何 但是,在这里的例子中,它也使用信号通道:根据外部输入改变优步节奏睡眠时间 我还会将代码粘贴到这里 你可以看到有,我不完全确定它

  • 我得到了下面的SQL,我想将其转换为有效的HQL。这方面的问题是,不允许根据文档加入子查询。尽管这些是旧文档(v3.3),但在hibernate 5.3中,这一节似乎仍然适用。 我想出了这个HQL: 尝试执行此HQL查询会导致此异常 这将提示 在. 有没有办法加入HQL中的子查询?如果不是,那么获得与具有HQL的SQL相同的结果的最佳方法是什么? 我不擅长转换