エラーによってmysqlのgoup使用することを行きます

SQL

var sql = "select max(version) as version, id, " +
		" tenant,type, name, format, default_value, multi_line, max_length, min_length, formula " +
		" from imcs_field_string_definitions " +
		" where id = 11 group by id"

エラー

エラー1055:SELECTリストの式#3は、GROUP BY句ではなく、GROUP BY句の列に機能的に依存しない非集約列「imcs.imcs_field_string_definitions.tenant」が含まれています。これはsql_modeの= ONLY_FULL_GROUP_BYと互換性がありません。

理由:

それぞれの再起動時にメイン、データベース設定を再初期化し
、各再起動の主なニーズが初期化されるようにした後、実行します。

select @@sql_mode;
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

最適化されたコードの後

// leimin, 批量查询最大版本的定义数据
func MaxVersionDefinition(db *gorm.DB, ids []string, tenant string) (maxModels []FieldStringDefinition, err error) {
	db.Exec("SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))")
	var sql = " select max(version) as version, id, " +
		" tenant,type, name, format, default_value, multi_line, max_length, min_length, formula " +
		" from imcs_field_string_definitions " +
		" where 1=1 ${ids} and tenant= ${tenant} " +
		" group by id "
	idsStr, err := concatString(ids)
	sql = strings.Replace(sql, "${ids}", idsStr, -1)
	sql = strings.Replace(sql, "${tenant}", tenant, -1)

	db = db.Raw(sql)
	db = db.Scan(&maxModels)
	return maxModels, db.Error
}
公開された97元の記事 ウォン称賛21 ビュー10000 +

おすすめ

転載: blog.csdn.net/leinminna/article/details/104959670