1

評価、価格、コードの 2 つの列を含むテーブルがあります。評価はカテゴリに似ています。コード = 'ABC' の場合、価格の昇順で各評価オーダーのトップ 10 を生成したいと考えています。次の mysql ステートメントの最後の 2 つの条件をどこに配置すればよいかわかりません。誰かアドバイスしてください。どうもありがとう

SELECT x.*
  FROM (SELECT t.*,
               CASE 
                 WHEN @rating != t.rating THEN @rownum := 1
                 ELSE @rownum := @rownum + 1 
               END AS rank,
               @rating := t.rating AS var_rating
          FROM offers t
          JOIN (SELECT @rownum := NULL, @rating := '') r
      ORDER BY t.rating) x
 WHERE x.rank <= 10

また、評価列に 1、1、1k、1*、1+、2、2、2+、3、3、3* などのエントリがある場合、これらすべてのエントリを「同じSQLステートメントでそれぞれ1'、2、3?

4

1 に答える 1

2

これを試して:

SELECT x.*
  FROM (SELECT t.*,
               CASE 
                 WHEN @rating != t.rating THEN @rownum := 1
                 ELSE @rownum := @rownum + 1 
               END AS rank,
               @rating := t.rating AS var_rating
          FROM offers t
          JOIN (SELECT @rownum := NULL, @rating := '') r
         WHERE code = 'ABC'
      ORDER BY t.rating, price) x
 WHERE x.rank <= 10

変更点は次のとおりです。

  • WHERE句の後にJOIN句を追加しました
  • 条項に追加priceされました。ORDER BY
于 2011-11-23T22:45:35.900 に答える