Domanda

Ho un applicazione PHP che visualizza un elenco di opzioni per l'utente.L'elenco viene generato da una semplice query SQL 2000.Quello che vorrei fare è di avere una specifica opzione in cima alla lista, e poi le restanti opzioni ordinati in ordine alfabetico.

Per esempio, ecco le opzioni, se ordinati in ordine alfabetico:

Calgary  
Edmonton  
Halifax  
Montreal  
Toronto  

Quello che vorrei la lista è più simile a questo:

**Montreal**  
Calgary  
Edmonton  
Halifax  
Toronto  

C'è un modo che mi può fare questo con una sola query?O sto bloccato in esecuzione la query due volte e aggiungendo i risultati?

È stato utile?

Soluzione

SELECT name
FROM locations
ORDER BY
    CASE
        WHEN name = 'Montreal' 
        THEN 0
        ELSE 1
    END, name

Altri suggerimenti

SELECT name FROM options ORDER BY name = "Montreal", name;

Nota:Questo funziona con MySQL, SQL 2000 come l'OP richiesto.

create table Places (
    add Name varchar(30),
    add Priority bit
)

select   Name
from     Places
order by Priority desc,
         Name

Ho avuto un problema simile su un sito che ho costruito, pieno di case report.Volevo che le segnalazioni di casi in cui la vittima è noto il nome di ordinare al top, perché sono più convincenti.Al contrario, ho voluto a tutti i John Doe casi di essere in fondo.Dal momento che questo coinvolti anche nomi di persone, ho avuto il nome/cognome di ordinamento problema.Non volevo dividere in due campi nome, perché in alcuni casi non sono persone a tutti.

La mia soluzione:

Ho un campo "Nome", che è ciò che viene visualizzato.Ho anche un "NameSorted" campo che viene utilizzato in tutte le query, ma non viene mai visualizzato.Il mio ingresso UI si prende cura di conversione "cognome, nome", inserita nel campo di selezione in versione con display automaticamente.

Infine, per "rig" l'ordinamento semplicemente mettere caratteri appropriati all'inizio del campo di ordinamento.Dal momento che voglio roba a venire fuori alla fine, ho messo "zzz" all'inizio.Per ordinare, in alto, si potrebbe mettere "!" all'inizio.Di nuovo la modifica di interfaccia utente può prendersi cura di questo per voi.

Sì, ammetto che è un po ' cheezy, ma funziona.Un vantaggio per me è che devo fare di più complesso query con join in luoghi diversi per generare le pagine contro RSS, ecc, e non devo tenere ricordando un'espressione complessa per ottenere l'ordinamento destra, sempre a ordinare il "NameSorted campo".

Fare clic su il mio profilo per vedere il seguente sito web.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top