Mysql
 sql >> Database >  >> RDS >> Mysql

sqlalchemy func.group_concat e ordine casuale dei dati

I risultati SQL sono (multi) insiemi e come tali non hanno ordinamento, a meno che non ne venga esplicitamente definito uno. Questo si applica alle righe di gruppo prodotte da GROUP BY anche; non c'è ordine all'interno dei gruppi, quindi gli aggregati ricevono valori in qualsiasi ordine venga prodotto dalla query corrente a seconda del piano, del layout fisico, della pianificazione ecc. La soluzione è definire esplicitamente il ordine :

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

Questo utilizza una funzione operatore generica per produrre la sintassi SQL richiesta. SQLAlchemy fornisce aggregate_order_by helper per la stessa sintassi, ma è fornito solo per il dialetto Postgresql.