2017-03-10 5 views
0

Ich möchte meine Ergebnisse einer Abfrage in der Reihenfolge der Where-Klausel bestellen.Ist es möglich, mysql-Abfrage nach OR-Reihenfolge zu sortieren

Zum Beispiel, ich habe diese Anfrage:

SELECT * 
    FROM config_ban_num 
WHERE 
    (adresse_seo LIKE '12-rue-de-rivoli%' 
    OR adresse_seo LIKE '13-rue-de-rivoli%' 
    OR adresse_seo LIKE '11-rue-de-rivoli%') 
    AND (postcode='75004') 

Wenn ich die Ergebnisse zu drucken, ich habe diese bekam:

11-rue-de-rivoli 
12-rue-de-rivoli 
13-rue-de-rivoli 

ich diesen Auftrag möchte die Reihenfolge, in where-Klausel in Bezug auf:

12-rue-de-rivoli 
13-rue-de-rivoli 
11-rue de rivoli 
+0

Ich sehe nicht viel ** ** Um in der Ausgabe zeigt Ihnen, wie gewünscht. –

+0

Siehe FIELD() ..... – Strawberry

+0

wo ist die Reihenfolge in Ihrer Ausgabe? es ist verschlüsselt – Krishnakumar

Antwort

1

eine Option ist mit einer Unterabfrage:

SELECT * FROM (
    SELECT *, 
     CASE WHEN adresse_seo LIKE '12-rue-de-rivoli%' THEN 1 
      WHEN adresse_seo LIKE '13-rue-de-rivoli%' THEN 2 
      WHEN adresse_seo LIKE '11-rue-de-rivoli%' THEN 3 
      ELSE 4 END as Position 
     FROM config_ban_num 
    WHERE 
     (adresse_seo LIKE '12-rue-de-rivoli%' 
     OR adresse_seo LIKE '13-rue-de-rivoli%' 
     OR adresse_seo LIKE '11-rue-de-rivoli%') 
     AND (postcode='75004') 
) SubQuery 

ORDER BY Position 
+0

perfekt! thnks – Vince

1

Verwendung MySQL's FIELD function:

SELECT * 
FROM config_ban_num 
WHERE adresse_seo in ('12-rue-de-rivoli%', '13-rue-de-rivoli%', '11-rue-de-rivoli%') 
AND (postcode='75004') 
ORDER BY FIELD(adresse_seo, '12-rue-de-rivoli%', '13-rue-de-rivoli%', '11-rue-de-rivoli%') 
+0

Sehr schön, ich war mir dieser Funktion nicht bewusst. Ist es möglich, mit anderen möglichen Feldern (Verkettungsreihenfolgen) zu kombinieren, wie 'ORDER BY FIELD (adresse_seo, '12 -rue-de-rivoli% '), FIELD (postcode,' irgendwas ')'? – Alisson

+1

Es sieht auch aus, dass diese Funktion ** Null ** zurückgibt, wenn die Zeichenfolge nicht gefunden wird, obwohl dies in diesem Szenario kein Problem wäre, da alle Zeilen eine der möglichen 3 Zeichenfolgen haben (aufgrund der WHERE-Klausel)). – Alisson

+1

Sie können mehrere FIELD-Befehle hinzufügen, obwohl ich nicht getestet habe, wie sie sich verhalten wird. Sie können es sogar mit normalen Order-By-Klauseln kombinieren. – metodski

Verwandte Themen