12

私は以下のようなテーブルを持っています

    CREATE TABLE Products(Product_id INT、ProductName VARCHAR(255)、
                          注目の列挙型('はい'、'いいえ')、優先度の列挙型('p1'、'p2'、'p3'))


    INSERT INTO Products(ProductName、Featured、Priority)
                  VALUES('Product A'、'Yes'、'p1')、
                        ('製品B'、'いいえ'、'p2')、
                        ('製品C'、'はい'、'p1')、
                        ('製品D'、'いいえ'、'p1')、
                        ('製品E'、'はい'、'p3')、
                        ('製品F'、'いいえ'、'p2')、
                        ('製品G'、'はい'、'p1')、
                        ('製品H'、'はい'、'p2')、
                        (「製品I」、「いいえ」、「p2」)、
                        ('製品J'、'はい'、'p3')、
                        ('製品K'、'はい'、'p1')、
                        ('製品L'、'いいえ'、'p3');


注目の製品に続いて、優先度p1、p2、p3の製品を入手する必要があります

Op:
   ProdName | 注目| 優先度

    製品Aはいp1
    製品Cはいp1
    製品Gはいp1
    製品Kはいp1
    製品Hはいp2
    製品Eはいp3
    製品Jはいp3
    製品Dいいえp1
    製品Bいいえp2
    製品Fいいえp2
    製品Iいいえp2
    製品Lいいえp3

それ以下では機能しないクエリを作成しました。

                                           
  選択する *
    FROM製品
   注目の注文(「はい」)説明、
            優先度IN('p1'、'p2'、'p3')説明

あなたはその中で間違いを見つけることができますか

4

4 に答える 4

16

これを試して

Select * from Products ORDER BY Featured, Priority

mysql enum で ORDER BY を使用すると、アルファベット順ではなく、enum 内の位置で並べ替えられます。

説明どおりにアルファベット順に並べたい場合は、列挙名を次のような文字列にキャストします

Select * from Products ORDER BY  concat(Featured) desc , Priority 
于 2012-10-30T05:39:19.227 に答える
3

単純に SQL を次のように使用してみませんか。

 SELECT * 
 FROM Products
  ORDER BY Featured desc,
        Priority asc;

こうYesすることで の前に表示されNoます。P1の前P2P2前に表示されP3ます。私はそれがあなたが望むものだと信じています。

順序付けでデータ型の問題が発生した場合、

 SELECT * 
 FROM Products
  ORDER BY CONCAT(Featured) desc,
        CONCAT(Priority) asc;
于 2012-10-30T05:35:26.500 に答える
0

このクエリを確認してください-

 SELECT * 
 FROM Products
  ORDER BY Featured asc,Priority,ProductName asc;

フィドル

作業コードチェックフィドル

于 2012-10-30T05:43:39.127 に答える