【问题标题】:How to use MySQL to return a concatenated string?如何使用 MySQL 返回连接的字符串?
【发布时间】:2013-07-29 16:24:18
【问题描述】:

我正在使用自定义构建的数据表版本来列出表中的记录。大多数时候它很棒,但偶尔我需要连接两个或多个表来显示查找表中的特定数据。这是一个新问题。我有 3 个表... event_categories、themes 和themes_eventcategories。 event_categories 和themes 是普通表,并且themes_eventcategories 具有字段“id”、“theme_id”和“event_category_id”。

我需要做的是获取事件类别列表,如果有与事件类别相关的主题,我需要以逗号分隔的字符串中的主题。这可能吗?

【问题讨论】:

  • 这是可能的,但是您是否将此查询用于生产目的?
  • 这将是我们在后端用于管理的东西,所以如果它是一个慢查询也没关系。
  • 这与速度无关。如果你使用 concat 并且有很多事件,那么就会有问题。您可以在该字段中使用一定数量的字符。最好的方法是使用嵌套选择
  • 另外请记住,由于我使用的是自定义版本的数据表,因此我需要主要从 event_categories 表中提取数据,即 SELECT * FROM event_categories INNER JOIN theme_eventcategories .... 等等跨度>

标签: mysql string concatenation


【解决方案1】:

你想要的是GROUP_CONCAT,可能是这样的:

SELECT event, GROUP_CONCAT(theme)
FROM themes_eventcategories a
JOIN event_categories b ON a.event_category_id = b.id
JOIN themes c ON a.theme_id = c.id
GROUP BY event

【讨论】:

    猜你喜欢
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 2010-09-14
    • 2014-03-31
    相关资源
    最近更新 更多