2011-07-02 5 views
3

"books"、 "dvds"、 "ポスター"、 "アクセサリ"などのセクションが入力されているアイテムが入力されているデータベースがあります"、"衣類 "など。そのため、各項目にセクションがタックされています。MySQLアイテムを取得するクエリですが、常に上部に特定のアイテムを表示します

ユニークなセクションを見つけるために私が使用しているSQLクエリーは、セクションごとにアイテムを整理するために使用できます。

SELECT DISTINCT section FROM merch 

これは私に正しい結果を与え、ユニークなセクションを配列に入れます。今、私は2つのセクションが常に最初にリストされるようにしたいと思います。だから私はいつも "ポスター"と "本"を1位と2位にして残りの部分を表示したいと思っています。

上記の2つのセクションが最初に表示されるように上記のクエリを調整する方法はありますか?残りの一意のカテゴリが下に表示されますか?

答えて

4
SELECT DISTINCT section FROM merch 
    ORDER BY FIELD(section, 'books', 'posters') DESC; 
+0

ありがとう!あなたとライアンの両方に同じタイプの対応がありました。しかし、私が望むフィールドが上にリストされるように、「DESC」が必要でした。 – Andelas

+2

@scatteredbomb: 'ORDER BY FIELD(セクション、 'ポスター'、 '書籍')DESC、セクションASC 'を最初に' books'、次に 'ポスター'、そしてASCを注文したセクションを表示します。 –

0

これは動作するはずです...

SELECT DISTINCT `section` 
      FROM `merch` 
     ORDER BY FIELD(`name`, 'posters', 'books'); 
0

あなたは、この方法はいくつか行うことができます。

セクションの動的なデータがある場合は、最も簡単にはおそらく

私は自分のアプリケーションでこれを行うとき、私は ORDER BY FIELD()機能を使用
SELECT * FROM section WHERE id = 'books' 
    UNION 
SELECT * FROM section WHERE id = 'posters' 
    UNION 
SELECT * FROM section WHERE id IN (SELECT DISTINCT section_id 
             FROM merch 
             AND section_id not in ('books','posters')) 
2

のような労働組合の声明で、

SELECT * FROM merch ORDER BY FIELD(section,'posters','books','dvds','accessories') 
下記参照
関連する問題