sql >> Base de Datos >  >> RDS >> Mysql

sqlalchemy func.group_concat y orden aleatorio de datos

Los resultados de SQL son conjuntos (múltiples) y, como tales, no tienen orden, a menos que defina uno explícitamente. Esto se aplica a las filas de grupo producidas por GROUP BY también; no hay orden dentro de los grupos, por lo que los agregados reciben valores en cualquier orden que produzca la consulta actual según el plan, el diseño físico, la programación, etc. La solución es definir explícitamente el ordenar :

func.group_concat(t.name.op("ORDER BY")(t.name))

Esto utiliza una función de operador genérica para producir la sintaxis SQL requerida. SQLAlchemy proporciona el aggregate_order_by ayudante para la misma sintaxis, pero se proporciona solo para el dialecto de Postgresql.