SQL排序(MySQL)

时间:2016-01-05 03:33:54

标签: mysql

这个看似简单的订单要求似乎没有简单的解决方案。

我希望一个表由具有最高最大值的项目排序,然后按降序排列相同项目的其余部分。然后是具有下一个最高最大值的项目,然后是降序的相同项目的其余部分..等等

例如,我需要订购一个类似这样的表:

item   value   
 AAA    2
 AAA    4
 AAA    2
 CCC    8
 BBB    1
 BBB    2
 BBB    6
 CCC    4

要像这样订购..

item   value   
 CCC    8
 CCC    4
 BBB    6
 BBB    2
 BBB    1
 AAA    4
 AAA    2
 AAA    2

有谁知道怎么做?

3 个答案:

答案 0 :(得分:3)

这是你似乎在寻找的东西:

select item, value
from tablename
order by item desc, value desc

以下是一个工作示例:http://sqlfiddle.com/#!9/e56d7/1

答案 1 :(得分:1)

select item, value from yourtable order by item desc, value desc;

MySQL order by two values

答案 2 :(得分:0)

这是一种方式:SQL Fiddle

MySQL 5.6架构设置

CREATE TABLE Table1
    (`item` varchar(3), `value` int)
;

INSERT INTO Table1
    (`item`, `value`)
VALUES
    ('AAA', 2),
    ('AAA', 4),
    ('AAA', 2),
    ('CCC', 8),
    ('BBB', 1),
    ('BBB', 2),
    ('BBB', 6),
    ('CCC', 4)
;

查询1

select
     t1.*
from (
  select item, max(value) mval from table1 group by item
  ) m1
inner join table1 t1 on m1.item = t1.item
order by 
      m1.mval DESC
    , t1.item
    , t1.value DESC

<强> Results

| item | value |
|------|-------|
|  CCC |     8 |
|  CCC |     4 |
|  BBB |     6 |
|  BBB |     2 |
|  BBB |     1 |
|  AAA |     4 |
|  AAA |     2 |
|  AAA |     2 |

回应下面有价值的评论: 这是此方法允许的另一种选择(nb:案例&#39; DDD&#39;已添加)

SQL Fiddle

MySQL 5.6架构设置

CREATE TABLE Table1
    (`item` varchar(3), `value` int)
;

INSERT INTO Table1
    (`item`, `value`)
VALUES
    ('DDD', 8),
    ('DDD', 8),

    ('AAA', 2),
    ('AAA', 4),
    ('AAA', 2),
    ('CCC', 8),
    ('BBB', 1),
    ('BBB', 2),
    ('BBB', 6),
    ('CCC', 4)
;

查询1

select
     t1.*
from (
  select item, max(value) mval , sum(value) sval 
  from table1 group by item
  ) m1
inner join table1 t1 on m1.item = t1.item
order by 
      m1.mval DESC
   ,  m1.sval DESC
    , t1.item
    , t1.value DESC

<强> Results

| item | value |
|------|-------|
|  DDD |     8 |
|  DDD |     8 |
|  CCC |     8 |
|  CCC |     4 |
|  BBB |     6 |
|  BBB |     2 |
|  BBB |     1 |
|  AAA |     4 |
|  AAA |     2 |
|  AAA |     2 |