2012-02-13 12 views
0

は、私はこの1つのようにMySQLのテーブルを持って、最初のいくつかの製品を表示:MySQLの結果は、(それは例があります)、その後、残り

TopProductは、ユーザーが管理者のシステム上で設定されたフラグがある
| ID | Product name | Price | TopProduct | 
| 01 | Product 001 | 10.00 |  1  | 
| 02 | Product 002 | 15.00 |  0  | 
| 03 | Product 003 | 20.00 |  1  | 
| 04 | Product 004 | 10.00 |  0  | 

1に設定されたフラグを持っている製品(TopProduct)は、リストの最初に表示されなければならないし、その後、クエリはすべてのフラグを立て、私を持参した後、それはその後、「IDが注文した他の製品を表示します

  • 製品003
  • 製品001
  • 製品:「

    だから最終的な結果に私はこのようなリストを持っているでしょう004

  • の質問は、どのように私は一緒に私のクエリまたはクエリを置く必要がありますされて002

製品? これについて何か考えていますか?

+1

これまでのところあなたの文書を読んだことで、またはあなたのMySQLの本?これはかなり基本的なものです:/ –

答えて

0

あなたはこの

SELECT ID, ProductName, Price FROM product ORDER BY TopProduct, ID DESC 
ような何かを行うことができます

これはTopProductで最初に注文します。その後、IDに基づいて再度

+0

これはかなりうまくいった。 実際に初心者の間違いは、複数のフィールドでORDER BYできることを知りませんでした。 –

+0

幸運の友人。 –

1

あなたはこれを使用することができます。これは、この方法で解決することができる

ORDER BY `TopProduct`, `ID` DESC 
+0

ありがとう、魅力的なように働いた –

0

select ProductName from table 
order by TopProduct desc 

もつともは、これが唯一の条件の下で動作しますがTopProductの最大値は、私が意味する1であることいずれかの行に2をつけてその列にフラグを立てることができれば、その行が最初に表示されるため、これは機能しません。それは事実ですか?

場合、それは、これが最初にかかわらず、カラム内の任意の数の存在で、すべて1をソートするクエリで、次のとおりです。

select ProductName from table 
order by if(TopProdct = 1, 1, 0) desc 
+0

ありがとう、この解決策も働いていましたが、私は複数のORDER BYにもっとシンプルだと思う...ありがとう –

関連する問題