mysql查询排序

序号 名称 资金
1 张三 8
2 李四 5
3 张三 1
4 王五 5
5 张三 1
6 王五 5
7 李四 14

资金至少10块钱才可以去排队吃饭,(只要借到10块钱就可以先去)
按照上面可以看出:
张三 (序号5满) > 王五(序号6满) > 李四 (序号7满)
可以说是按借满10块钱排序
怎么查询出来呢

阅读 2.8k
4 个回答

mysql的话可以设变量记录资金和,再设一个变量作为达标标识,遍历一次记录后,每行数据都携带两个值,标识当前该用户总共消费资金和第几个达标的数字。最后再查询一遍以上记录根据达标标识排序。
表名:consumes 序号:id,名称:name,资金:pay

SELECT
  d.name,
  d.id,
  d.allpay
FROM
  (SELECT
    id,
    @allpay := c1.pay + (
      CASE
        WHEN @name = c1.name
        OR @name = ''
        THEN @allpay
        ELSE 0
      END
    ) AS 'allpay',
    @name,
    pay,
    @name := c1.name AS 'name'
  FROM
    (SELECT
      *
    FROM
      consumes
    ORDER BY NAME,
      id) c1,
    (SELECT
      @allpay := 0) a,
    (SELECT
      @name := '') b) d
WHERE d.allpay >= 10
GROUP BY d.name
ORDER BY id
select name, sum(funds) as sfunds
from tableName 
group by name
having sum(funds) > 10
order by sfunds;

这是一张记录表,理论上还有一个账户总资金表,记录用户当总资金,当新增一条记录到达资金10时你可以对该条记录进行处理,或者再用一张表把这个到达10的记录进行记录

哪有这种排序的,做不到的,除非你把全部数据给查出来,然后循环全部数据去处理。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题