MySQL-选择和分组依据问题(&G)

MySQL-选择和分组依据问题(&G),mysql,sql,group-by,group-concat,Mysql,Sql,Group By,Group Concat,大家好,精彩的社区 我有一个数据库的基本配置MySQL/PHP: 页数表 标签表 页面标签表 查询: SELECT *, GROUP_CONCAT('tags_name') FROM pages LEFT JOIN pages_tags ON pages_tags.pages_id = pages.pages_id LEFT JOIN tags ON tags.tags_id = pages_tags.tags_id GROUP BY pages_tags.pages_id; 我有以下错误

大家好,精彩的社区

我有一个数据库的基本配置MySQL/PHP:

页数表 标签表 页面标签表 查询:

SELECT *, GROUP_CONCAT('tags_name')
FROM pages 
LEFT JOIN pages_tags ON pages_tags.pages_id = pages.pages_id
LEFT JOIN tags ON tags.tags_id = pages_tags.tags_id 
GROUP BY pages_tags.pages_id;
我有以下错误:

"Expression #1 of SELECT list is not in GROUP BY clause and contains
 nonaggregated column this is incompatible with sql_mode=only_full_group_by"
所以我做了很多研究,似乎有两种解决方案:

1/更改SQL模式 2/在“选择和分组依据”中具有相同的列

这两种解决方案似乎都不好。第一个是因为我不想更改默认配置,第二个是疯狂的,我需要在SELECT中有很多列,而不仅仅是groupby。特别是如果查询更复杂,有更多的左连接。我需要显示所有这些信息

你有什么解决办法吗?其他方法的替代方案? 我对任何事情都开放


非常感谢

从mysql 5.7开始,您可以使用select not INTERNATED in aggreagtion函数中的列和group by子句中未提及的列,因此您不应使用*all for column,而应在select中添加明确的列名,并在group by中提及select not INTERNATED in AGGROUP by函数中的列

    SELECT `pages_tags`.`pages_id`, GROUP_CONCAT('tags_name')
    FROM `pages` 
    LEFT JOIN `pages_tags` ON `pages_tags`.`pages_id` = `pages`.`pages_id` 
    LEFT JOIN `tags` ON `tags`.`tags_id` = `pages_tags`.`tags_id` 
    GROUP BY `pages_tags`.`pages_id`

谢谢但这对我没有帮助。因为就像我在文章末尾说的,我需要更多的信息。我需要所有的表列。这就是为什么我写了SELECT*那么我该怎么做?然后更新你的问题并添加一个适当的数据样本和预期结果预期结果很简单:我想要所有的数据!不仅仅是pages\u tags.pages\u id、GROUP\u CONCAT'tags\u name',我需要*、GROUP\u CONCAT'tags\u name',我正在寻找一个解决方案来获取所有数据。我需要PAGES表的所有列。您发布了一个错误问题,我的回答中不再出现错误。。因此,我认为我的答案是正确的解决方案,在您的问题中,SELECT list的表达式1不在GROUP BY子句中,并且包含未聚合列。这与sql\u mode=only\u full\u GROUP\u BY不兼容。由于我们不知道您的数据结构,以及如果有人要求更好的解释,您真正需要的是什么,我认为您应该补充所要求的信息。。不回避。否则我们就不能提出有效的建议。我把我的问题贴了出来,说明了问题的原因和解决方法。所以我已经知道了。但我说这两种解决方案都不符合我的需要,因为我不能在GROUP BY和SELECT中只包含相同的列。无论我的数据结构是什么,问题仍然是:如何拥有更多组中的字段。我的结构是基本的:2张桌子和一张关节桌。这是一个基本结构。我的期望是得到所有的专栏。那么,有没有一种解决方案是使用GROUP_CONCAT&GROUP_BY,或者有其他MySQL方法的替代方案呢?给我们展示一些什么样的示例数据?这是一个基本的结构:有100列的Pages表、只有几列的Tags表和连接这两者的joint表,因为一个页面可以链接到多个标记。我需要有一个页面列表,所有标签链接在一个字段中列出。