mysql - MySQL - 多个 TABLES 上的多个 GROUP_CONCAT(服务器错误)
问题描述
我有这样的表和查询: SQLFIDDLE
SELECT P.*,
GROUP_CONCAT(DISTINCT `trait_name` ORDER BY `trait_id` SEPARATOR ', ') AS traits,
GROUP_CONCAT(DISTINCT `filter_name` ORDER BY `filter_id` SEPARATOR ', ') AS filters
FROM `products` P
NATURAL JOIN
`personality_traits`
NATURAL JOIN
`product_to_traits`
NATURAL JOIN
`filters`
NATURAL JOIN
`product_to_filters`
GROUP BY P.`product_name`
我想选择所有产品并显示给定产品所属的所有特征和过滤器(特征和过滤器在单独的表中)。
这个解决方案在我的本地主机上运行得很好,但不幸的是在目标服务器上不行。
我还能怎么写这个查询?
编辑:
当我删除其中一个 GROUP_CONCAT(以及相应的 NATURAL JOIN)时,我的服务器可以处理这个问题。添加第二个 GROUP_CONCAT 时,服务器正在加载我的查询一段时间,最后抛出“500 服务器遇到内部错误或配置错误,无法完成您的请求。” . 我有 OVH 的基本(个人)托管计划
解决方案
您的代码可能会失败,因为它不是有效的聚合查询:select
子句必须与group by
子句一致。
制作product_id
table 的主键products
。然后,只需将GROUP BY
子句更改为:
GROUP BY p.`product_id`
推荐阅读
- python - 主字符串 python/biopython 中的现有子字符串没有输出
- convertapi - convertApi.ConvertAsync 不返回转换后的图像
- c# - 视图未在具有 MySQL 数据库的 ASP.NET MVC 应用程序中显示数据
- html - 添加与多行 h1 的最长文本行一样宽的边框
- sql - SQL - 字段中相同ID的不同值,显示在一行中
- angular - 对于所有 API 调用,Angular 获取相同的会话 ID
- python - 从字典列表中创建 Pandas DataFrame?每个字典作为 DataFrame 中的行?
- google-apps-script - 如何在 Google Sheets Scripts 中获取工作表的最后一行(不是数据的最后一行)?
- lazarus - 我需要帮助解决 Lazarus FPC Blowfish 库使用问题
- python - 为什么没有出现“游戏结束”文字?