2016-01-11 37 views
5
$qry="select * from table where category='car' or title='car' or description='car'"; 

ma voglio che l'output elenchino le righe per categoria prima e poi titolo e quindi descrizione.mysql: ordina il risultato per nome colonna

**** Edit: in realtà sto usando un operatore di come cercare **

Esempio:

id category title description 
    1 car 
    2 car 
    3   car 
    4   car 
    5   car 
    6     car 

c'è un modo diverso usando l'unione?
Grazie in anticipo.

+1

Siete alla ricerca di ORDER BY? Spiacente ma non chiaro .. – Kamal

+0

Penso che l'ordine non funzionerà. se pensi che possa aiutarti a rispondere alla mia domanda, per favore, postalo –

+0

puoi seguire la risposta di Gordon ... è meglio di noi. – devpro

risposta

9

È possibile farlo utilizzando ORDER BY con i tasti giusti. In MySQL, si può fare:

ORDER BY (category = 'car') DESC, 
     (title = 'car') DESC, 
     (description = 'car') DESC 

MySQL tratta espressioni booleane come numeri interi in un contesto numerico, con 0 per falso e 1 per vero. Quindi lo DESC mette per prime le vere versioni.

È inoltre possibile semplificare la clausola di WHERE se ti piace:

WHERE 'car' IN (category, title, description) 
+0

mi dispiace amico mio, ma ho vinto questa gara ... guadagnare il mio voto acclamazione compagno ... – devpro

0

è possibile avere più ORDER BY clausola nella query.

select *from table where category='car' or title='car' or description='car' ORDER BY category DESC, title DESC, description DESC 

Vedere questa risposta per riferimento. mysql query order by multiple items

+0

Dovrebbe essere in ordine decrescente. –

+0

Anche bisogno di uno spazio dopo il '*' – RiggsFolly

+0

Forse no ma LEGGE sicuramente meglio con uno – RiggsFolly

1

È possibile utilizzare ORDER BY per più colonne come:

SELECT * FROM tablename ORDER BY category DESC, title DESC, description DESC 

ho provato ed è worked.

enter image description here

+0

Hai dimenticato il calamo di 'WHERE' credo. –

+0

grazie fratello per il vostro aiuto –

2

È possibile ottenere questo risultato usando questa affermazione:

SELECT * FROM mytable 
WHERE (category='car' OR title='car' OR description='car') 
ORDER BY category = 'car' DESC, 
title = 'car' DESC, 
description = 'car' DESC 

Come funziona?

Imposta gli ordini di dati in DESC per sequentially come indicato nella query. Puoi cambiare la sequenza come vuoi.

+0

grazie fratello per il vostro aiuto –

1
Try this , 

SELECT * FROM table where 'car' IN (category, title, description) ORDER BY category DESC, title DESC, description DESC 
0

Prova questa ricerca:

select * from table 
where category='car' or title='car' or description='car' 
order by 1 desc, 2 desc, 3 desc