2011-12-19 13 views
2

基本的に私はmerchantidの18,36,90のリストを持っています。私はこれらの商人のすべての行を引っ張りたい。特定の順序でデータベースから行を引き出す(ORDER BYを使用しない)

最初のケースでは、merchantidの列をこの順序で18,36,90の順番に引きます。次MYSQL文は正しい順序でそれらを引くために偶然merchantidのか、昇順で:

SELECT * FROM tblMerchants WHERE merchantid=18 OR merchantid=36 OR merchantid=90 

私は36,90,18のように異なる順序でmerchantid年代を持つ行を引っ張るしたい場合はどのようににISN」昇順または降順?ありがとう!

+0

私はuが ' –

答えて

3

クエリに明示的なORDER BYがないかぎり、データが特定の順序で返されるとは決して決して(昇順のmerchantidによって結果が返されると述べている)。

ここでは、CASE文を使用して希望の注文をハードコードすることができます。

SELECT * 
    FROM tblMerchants 
    WHERE merchantid IN (18, 36, 90) 
    ORDER BY CASE WHEN merchantid=36 THEN 1 
        WHEN merchantid=90 THEN 2 
        WHEN merchantid=18 THEN 3 
        ELSE 4 
      END 
+0

おかげで動作するはずです)のrand(で順番'ではなく、順序を使用していないと述べた知っています!ほんとうにありがとう。 – PaperChase

0

デフォルトと異なる順序で結果セットが返されるようにするには、ORDER BY句を使用する必要があります。ランダムな順序でランダムな値を指定することもできますし、任意の値を割り当ててその列で結果セットを並べ替える「ダミー」列で独自の順序を定義することもできます。

0

SELECTに他の列がない場合は、これを追加してこのようなことをすることができます(これはJoeの回答のバリエーションです)。

SELECT *, CASE 
     WHEN merchantid = 36 THEN 1 
     WHEN merchantid = 90 THEN 2 
     WHEN merchantid = 18 THEN 3 
    END AS myorder 
    FROM tblMerchants WHERE last_name IN (18, 36, 90) 
    ORDER BY myorder 
関連する問題