MySQL报错: Expressão #1 da lista SELECT não está na cláusula GROUP BY e contém coluna não agregada

Este erro ocorre principalmente porque os campos no conteúdo do select não aparecem agrupados por

Aqui estão duas soluções:

O primeiro:

Adicione uma linha ao seu arquivo MySQL my.ini

[mysqld]
sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
 

O segundo tipo:

eu estava usando

SELECT
 *
FROM
 biz_table bt
 LEFT JOIN biz_table_ver btv ON bt.table_id = btv.table_id 
WHERE
 bt.system_up = 1 
GROUP BY
 bt.table_name

Essa forma de escrever dá um erro

 A expressão nº 1 da lista SELECT não está na cláusula GROUP BY e contém a coluna não agregada 'zx_ds.biz_table_ver.ver_id' que não depende funcionalmente das colunas na cláusula GROUP BY; isso é incompatível com sql_mode=only_full_group_by\n### O erro pode existir na URL [jar:file:/opt/zxs/ds/ds-dict.jar!/BOOT-INF/classes!/mapper/system/BizTableMapper. xml]\n### O erro pode envolver com.gyjn.dict.data.mapper.BizTableMapper.selectBizTableList-Inline\n### O erro ocorreu ao definir os parâmetros\n### SQL: select * FROM biz_table bt LEFT JOIN ( SELECT * FROM biz_table_ver GROUP BY table_id ) btv ON bt.table_id = btv.table_id WHERE bt.system_up=1\n### Causa: java.sql.SQLSyntaxErrorException: Expressão #1 da lista SELECT não está na cláusula GROUP BY e contém a coluna não agregada 'zx_ds. biz_table_ver.ver_id' que não é funcionalmente dependente de colunas na cláusula GROUP BY; isso é incompatível com sql_mode=only_full_group_by\n; gramática SQL ruim []; a exceção aninhada é java.sql.SQLSyntaxErrorException: a expressão nº 1 da lista SELECT não está na cláusula GROUP BY e contém a coluna não agregada 'zx_ds.biz_table_ver.ver_id' que não depende funcionalmente das colunas na cláusula GROUP BY; isso é incompatível com sql_mode=only_full_group_by" ver_id' que não é funcionalmente dependente de colunas na cláusula GROUP BY; isso é incompatível com sql_mode=only_full_group_by" ver_id' que não é funcionalmente dependente de colunas na cláusula GROUP BY; isso é incompatível com sql_mode=only_full_group_by"

mais tarde mudou para

SELECT
	* 
FROM
	biz_table_ver v
	INNER JOIN biz_table t
	INNER JOIN ( SELECT max( ver_id ) ver_id, table_id FROM biz_table_ver GROUP BY table_id ) maxv ON v.ver_id = maxv.ver_id 
	AND t.table_id = maxv.table_id

é isso

おすすめ

転載: blog.csdn.net/m0_57666466/article/details/125395289