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

    Select con ordinamento particolare

    Ciao,
    io dovrei passare alla mia query un elenco di id.

    e vorrei che la query estraesse le righe allo stesso modo in cui io gli passo gli id.

    SELECT * FROM tabella WHERE id IN ('26','43','1','56');

    è possibile mantenere l'ordinamento? Come?

    Se non si può con mysql, come posso farlo con php?

    Potrei fare un array

    array('26','43','1','56') e usare ksort...

    altre strade?
    Ciao!

  2. #2
    mmm, direi che dovresti costruirti nell'order by un gigantesco if o uno switch/case facendo in modo che venga restituito il cardinale dell'ordine in base all'id (ad esempio per 26 restituisce 1, per 43 restituisce il 2 e via dicendo)

    ad esempio qualcosa del genere

    codice:
    SELECT
      *, CASE id
        WHEN 26 THEN 1
        WHEN 43 THEN 2
        WHEN 1 THEN 3
        WHEN 56 THEN 4
      END AS __tmp_col_order
    
    FROM
      tabella
    
    WHERE
      id IN ('26','43','1','56')
    
    ORDER BY
      __tmp_col_order ASC
    nel frattempo sposto il thread in database dove possibilmente riceverai anche soluzioni migliori di questa
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    SELECT * FROM tabella WHERE id IN (26,43,1,56) order by field(id,26,43,1,56)

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.