Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

sqlalchemy func.group_concat e ordem aleatória de dados


Os resultados SQL são (multi) conjuntos e, como tal, não têm ordenação, a menos que você defina explicitamente um. Isso se aplica a linhas de grupo produzidas por GROUP BY também; não há ordem dentro dos grupos e, portanto, os agregados recebem valores em qualquer ordem em que a consulta atual, dependendo do plano, layout físico, agendamento etc., produza. A solução é definir explicitamente o encomenda :
func.group_concat(t.name.op("ORDER BY")(t.name))

Isso usa uma função de operador genérico para produzir a sintaxe SQL necessária. SQLAlchemy fornece o aggregate_order_by helper para a mesma sintaxe, mas é fornecido apenas para o dialeto Postgresql.