1

我有一个表,其中包含以下两列,包括其他列:评级、价格和代码。评级类似于类别。我希望通过价格升序为每个评级订单生成前 10 名,其中代码 = 'ABC'。我不知道在下面的 mysql 语句中将最后两个条件放在哪里。请有人建议。非常感谢

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* 等条目,我怎么能将所有这些条目视为 ' 1'、2、3分别在同一个sql语句中?

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子句
  • 添加priceORDER BY子句中。
于 2011-11-23T22:45:35.900 回答