Sto attraversando il dolore di normalizzare un database legacy orribile e ho scoperto quello che penso sia un bug con il DBMS.Se un ORDER BY influisce sul numero di righe restituite una query SELECT?
Questa query restituisce i risultati come mi aspetto:
SELECT DISTINCT RIGHT(SQUEEZE(thing_id), 2) AS thing_id, TRIM(thing_name)
FROM thing
ORDER BY thing_id, thing_name;
(16 rows)
La prima volta che ho eseguito la query, che aveva inavvertitamente usato le colonne sbagliate nella ORDER BY, come di seguito:
SELECT DISTINCT RIGHT(SQUEEZE(thing_id), 2) AS thing_id, TRIM(thing_name)
FROM thing
ORDER BY thing_name, location;
(33 rows)
Si noti che l'unica cosa da modificare è ORDER BY e il numero di righe restituite aumenta da 16 a 33. I risultati che fornisce non sono DISTINTUALI come specifica la query.
Credo che questo sia un vero bug, ma un collega dice che è normale perché quando ordiniamo per "posizione", viene selezionato un incluso invisibilmente nei risultati.
L'ORDER BY influisce sul numero di righe restituite in una query SELECT?
EDIT: Ho chiesto a un'altra persona di esaminare le query E ho copiato le query in due file separati, quindi ho eseguito un comando diff su di essi. È sicuro al 100% che l'unica differenza tra le due query sia le colonne elencate in ORDER BY.
AGGIORNAMENTO: Ingres dalla patch di rilascio 14301 con bugfix: "La query Bug 126640 (GENERIC) con espressione order-by e aggregato distinto restituisce più righe del previsto. Le colonne nell'espressione order-by non si trovano nell'elenco di selezione ".
Ad esempio, la query in questione causerà un errore poiché i risultati non sono corretti.
Quale db è? –
Tag dice ingres – ilanco
Puoi mostrare la query esatta? –