Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    UNION ALL e ORDER BY nella stessa query

    Sono tanti giorni che cerco su internet una soluzione al mio problema .
    Cerco di eseguire questa query:
    codice:
    SELECT * 
    FROM (SELECT ID1, TESTO, TIMESTAMP, STATO FROM messaggi WHERE ID2='33' AND ID1='1' AND TYPE ='0' AND STATO !='0' 
    UNION ALL
    SELECT ID1, TESTO, TIMESTAMP, STATO FROM messaggi WHERE ID2='1' AND ID1='33' AND TYPE ='0' AND STATO !='0') a 
    ORDER BY TIMESTAMP DESC
    Il risultato che ottengo però non è ordinato in modo uniforme ma stampa prima i risultati del primo select in modo ordinato poi quelli del secondo select. Quello che vorrei ottenere è una serie di risultati ordinati per il timestamp indifferentemente dalla tabella di provenienza (che alla fine è la stessa).
    Grazie a tutti in anticipo

  2. #2
    che versione di MySQL stai usando? se faccio una union all e alla fine metto l'order by a me li ordina correttamente

    giusto per scrupolo, chissà qualcosa possa dargli fastidio, puoi fare

    codice:
    (SELECT ID1, TESTO, TIMESTAMP, STATO FROM messaggi WHERE ID2='33' AND ID1='1' AND TYPE ='0' AND STATO !='0' )
    UNION ALL
    (SELECT ID1, TESTO, TIMESTAMP, STATO FROM messaggi WHERE ID2='1' AND ID1='33' AND TYPE ='0' AND STATO !='0')
    ORDER BY TIMESTAMP DESC
    PS: ho tolto la derived table perché in questo contesto, almeno per come hai scritto la query, non serve, senza contare che mentre così mysql può usare le chiavi per fare l'ordinamento, in quel modo no
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.