数据如下:
id name date 
1  a    11-11
2  b    11-12
3  a    11-13
4  c    11-10
5  a    11-15
6  d    10-15
7  c    11-20
8  d    12-20
9  c    10-13
10 a    10-15
要求结果如下:
id  name  date  sum
8  d    12-20    2
6  d    10-15    2
7  c    11-20    3
4  c    11-10    3
9  c    10-13    3
5  a    11-15    4
3  a    11-13    4
1  a    11-11    4
10 a    10-15    4
2  b    11-12    1

解决方案 »

  1.   

    真看不出有什么排序规律,自己再补排序方式吧SELECT id, name AS new_name, date, (SELECT count( * ) 
    FROM test1
    WHERE name = new_name
    )sum
    FROM test1
    ORDER BY name
      

  2.   


    SELECT id, NAME AS name1, DATE,(SELECT COUNT(NAME) FROM tb WHERE NAME = name1) AS SUM
    FROM tb
    ORDER BY NAME DESC,DATE DESC;
      

  3.   

    select * from table1 a
    order by (select max(date) from table1 where name=a.name)
      

  4.   

    对啊,所以看不懂是怎么个排序法,按统计数结果排序也不对,因为2 b最后一笔;按照name排序也不像,同样因为2 b,按照name,date排序也不像……
      

  5.   

    sum=1的在最后?楼主简要说明要求
      

  6.   

    非常抱歉,最后一个数据应该是2 b 10-12 1
    简单描述下:比如name 的排序为 d c a b 是根据时间倒序排列,所以8 d 12-20 2排第一,再列出所有name为d的数据,最后统计name = d的数量,以此类推。。
      

  7.   

    SELECT *,(SELECT COUNT(*) FROM ttl WHERE a.`name`=`name` ) AS `sum`
     FROM ttl a
    ORDER BY FIND_IN_SET(a.`name`,'d,c,a,b'),a.`date` DESC
      

  8.   

    select ss.id,ss.name,ss.date,zhen.sum
    from (select name,count(*)as sum  from ss group by name)as zhen
    left join ss  on zhen.name=ss.name 
    order by ss.name  desc,sum时间不会降序排列,再请高手调试下
      

  9.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  10.   

    我们的原则是,结果对就行了。哈哈select * from (
    select a.id,a.name,a.date,(select count(1) from test12 b where b.name=a.name) sum from test12 a where a.id!=2 order by sum asc,date DESC ) d 
    union ALL
    select * FROM (
    select a.id,a.name,a.date,(select count(1) from test12 b where b.name=a.name) sum from test12 a where a.id=2 order by sum asc,date DESC ) e