2017-08-15 3 views
-2

私は750台のデータベースを持っていますが、私は&の各モデルを作るのに最も安い車を5つ以上選択してクエリを実行したいと思います。結果。Mysqlのクエリ5つの最も安い車、複数のメーカー、単一のテーブルから

マイテーブルのフィールドは、私は合計で25から5台の安いドッジ200車両を含むように出力を希望例えば等

fldYear、fldMake、fldModel、fldRetail、合計で30から5つの安いホンダ・アコードであります、5つの最も安いジープチェロキーの合計から10、そして2つだけの場合は、フォルクスワーゲンjettas、同様にそれらを含める。上記の例では、私の出力は合計17レコードです。

私はソートとグループバイで遊んでいますが、希望の出力を得ることができません。

+4

これまでに何を試しましたか?そして、それは最も安いmake * and *モデルですか?あなたはモデルに関係なく、5つの最も安いVWゴルフと5つの最も安いVWポロ、またはVWのもっとも安い5を手に入れますか? – Qirel

+1

参照:[私は非常に単純なSQLクエリと思われるものに対してMCVEを提供するのはなぜですか?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve私にとっては非常にシンプルなSQLクエリ) – Strawberry

+0

クエリでLIMIT 5を使用しますが、これは非常に怠惰な質問です – lauw

答えて

1

だけの変数を使用します。

SELECT * 
FROM (
    SELECT *, 
      @row := if(fldMake = @make, 
         @row := @row + 1, 
         if(fldMake := @make, 1, 1) 
        ) as row 
    FROM yourCars 
    CROSS JOIN (SELECT @make := '', @row:=0) as vars 
    ORDER BY fldMake, fldRetail ASC 
    ) as T 
WHERE T.row <= 5 
1

私はあなたが1つのブランドから5安い車を取得し、配列やオブジェクトにそれを置くべきだと思います。他のブランドと同じで、必要なすべてのデータを取得した後、それらを新しい配列にマージすることができます。

+0

あまり効率的ではありません私の答えをチェックしてください。 –

+0

ええ、それは効率的な方法ではなく、試したクエリのすべてが機能しない場合の最後のオプションです。 –

+0

お返事ありがとう、大変感謝しています。私は等号の前の:を削除しなければなりませんでした。さもなければ、構文に誤りがありました。以下のクエリはすべての車両を返します。 –

関連する問題