Wyniki SQL są (wielo)zestawami i jako takie nie mają kolejności, chyba że wyraźnie zdefiniujesz jeden. Dotyczy to grup wierszy utworzonych przez GROUP BY
również; nie ma kolejności w grupach, więc agregaty otrzymują wartości w dowolnej kolejności, w jakiej powstaje bieżące zapytanie w zależności od planu, układu fizycznego, harmonogramu itp. Rozwiązaniem jest wyraźne zdefiniowanie zamów
:
func.group_concat(t.name.op("ORDER BY")(t.name))
Używa funkcji operatora ogólnego aby utworzyć wymaganą składnię SQL. SQLAlchemy udostępnia aggregate_order_by
pomocnik dla tej samej składni, ale jest dostępny tylko dla dialektu Postgresql.