您好,美好的社区,
我对此数据库有一个基本配置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&GROUP BY中具有相同的列。
两者似乎都是不好的解决方案。第一个是因为我不想更改默认配置,第二个是疯狂的,所以我需要在SELECT中有很多列,而不仅仅是GROUP BY。尤其是在查询更加复杂且包含更多LEFT JOIN的情况下。我需要显示所有这些信息。
您有什么解决方案吗?其他方法的替代方案? 我对任何事物都开放;)
非常感谢!
答案 0 :(得分:0)
从mysql 5.7开始,您可以在select中使用不涉及聚集函数的列,并且在group by子句中未提及,因此您不应该对列使用*(全部),而应在select中添加显式列名并在select中提及列不参与分组依据
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`