2017-03-10 7 views
0

where句の後にクエリの結果を注文したいと思います。OR命令でmysqlクエリをソートすることは可能ですか

例えば、私はこのクエリを持っている:私は、where句の順序に関するこの順序をしたいと思います

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

:私は結果を印刷するとき

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') 

、私はこれを持っています:

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

は私がずっと**順**出力で必要に応じて、あなたが表示され表示されません。 –

+0

FIELD()を参照..... – Strawberry

+0

出力の順序はどこですか?それはスクランブルされている – Krishnakumar

答えて

1

1つのオプションは、サブクエリを使用している:

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

完璧! thnks – Vince

1

使用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

非常にいいですが、私はこの機能を認識していませんでした。 'ORDER BY FIELD(adresse_seo、'12 -rue-de-rivoli% ')、FIELD(郵便番号、'何か ')'のような他の可能なフィールド(連鎖順序句)と組み合わせることは可能ですか? – Alisson

+1

また、この関数は文字列が見つからない場合は** zero **を返しますが、このシナリオでは問題はありませんが、すべての行には3つの文字列のうちの1つが含まれるため(WHERE'節)。 – Alisson

+1

動作方法をテストしていなくても、複数のFIELD注文を追加できます。あなたはそれを通常のorder by節と組み合わせることさえできます。 – metodski

関連する問題