mysql-select-group-by问题

nxagd54h  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(366)

大家好,这个美好的社区,
我有一个基本的配置mysql/php和这个数据库:
pages表
本程序更新标记表
页面标签表
查询:

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中有很多列,而不仅仅是groupby。尤其是当查询更复杂,左连接更多时。我需要显示所有这些信息。
你有什么解决办法吗?其他方法的替代方法?我什么都愿意;)
谢谢!!

5t7ly7z5

5t7ly7z51#

从MySQL5.7开始,在group by子句中可以使用select not INTERNATED in aggreagtion函数中的列和group by子句中未提及的列,因此不应使用*(all)作为列,而应在select中添加explict列名,并在group by中的select not INTERNATED in AGGROUGTION函数中提及该列

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`

相关问题