2016-04-08 61 views
0

我已经有一个查询导致这样订单行和显示顺序编号

+-----------+------------+---------------+--------+ 
| DetailsNo | SaleDate | Country  | Value | 
+-----------+------------+---------------+--------+ 
|  277 | 2012-02-10 | PHI   |  42 | 
|  279 | 2012-02-10 | PHI   |  10 | 
|  280 | 2012-02-10 | USA   |  30 | 
|  281 | 2012-02-10 | USA   |  25 | 
|  282 | 2012-02-10 | FRA   |  65 | 
|  283 | 2012-02-10 | FRA   |  36 | 
|  284 | 2012-02-10 | GER   |  47 | 
+-----------+------------+---------------+--------+ 

我需要的是添加另一列,并显示一个排序的顺序编号如下所示:

+-----------+------------+---------------+--------+--------+ 
| DetailsNo | SaleDate | Country  | Value | Order | 
+-----------+------------+---------------+--------+--------+ 
|  277 | 2012-02-10 | PHI   |  42 |  1 | 
|  279 | 2012-02-10 | PHI   |  10 |  2 | 
|  280 | 2012-02-10 | USA   |  30 |  1 | 
|  281 | 2012-02-10 | USA   |  25 |  2 | 
|  282 | 2012-02-10 | FRA   |  65 |  1 | 
|  283 | 2012-02-10 | FRA   |  36 |  2 | 
|  284 | 2012-02-10 | GER   |  47 |  1 | 
+-----------+------------+---------------+--------+--------+ 

这可能吗?

+0

什么是你的现有代码?你试过了什么,有什么问题? –

+0

实际上,你很可能不想存储这个值。 – Strawberry

回答

0

可以使用变量此:

SELECT DetailsNo, SaleDate, Country, Value, 
     @rn := IF(@c = Country, @rn + 1, 
       IF(@c := Country, 1, 1)) AS 'Order' 
FROM mytable 
CROSS JOIN (SELECT @rn := 0, @c := '') AS vars 
ORDER BY Country, DetailsNo 

Demo here

+0

请勿拨打“立柱”订单。 – Strawberry

+0

@Strawberry无论出现什么问题,都没有理由大喊大叫。 –

+0

我不叫喊。我强调每一个字;-) – Strawberry