2016-06-22 17 views
1

Ich habe Abfrage ähnlich wie die Frage in dem unten angegebenen Link.mysql like Abfrage und sortby Position des Briefes

https://dba.stackexchange.com/questions/60137/mysql-is-it-possible-to-order-a-query-by-a-specific-letter-using-order-by?newreg=c7d05bbfb2db401082ff650715882016

Problem ist, dass die Abfrage alle Zeilen unabhängig von gesuchten Begriff zurückgibt. Nicht nur ich bekomme pname beginnend mit D, sondern auch alle diejenigen, die nicht D haben, ist nur Erfolg, dass Ergebnisse Zeilen haben, deren Anfangsbuchstaben als 'D' oben auf dem Ergebnis stehen. Wie kann ich das vermeiden?

Antwort

2

Haben Sie so etwas wie dies versucht (nach Ihnen erwähnt schreiben haben):

SELECT 
     pname, pdescription, price 
    FROM 
     products 
    WHERE pname LIKE '%D%' 
    ORDER BY 
    CASE 
     WHEN pname LIKE 'D%' THEN 1 
     ELSE 2 
    END; 

Achte auf WHERE Klausel

-1

Wenn Sie alle Zeilen auflisten möchten, wo das gesuchte Feld mit D beginnt man einfach hinzufügen

.. 
WHERE my_field LIKE 'D%' 
+0

Ich möchte 'WHERE my_field LIKE '% D%'', aber wollen die Ergebnisse beginnend mit 'D' auf der Oberseite des Ergebnisses. –

+0

Aber wenn Sie das Wo hinzufügen, gibt es keine anderen Ergebnisse als diejenigen, die mit "D" beginnen – Jonny