zoukankan      html  css  js  c++  java
  • rank SQL 筛选重复数据

    先思考一个问题:
    看下面的表数据
    问题:现在需要在 A 和 B 相同的前提下对 C desc排序,然后拿到排序中不是第一个的数据?也就是说拿到下面的数据
    只用一条 SQL 实现:
     1 select * from (
     2 select
     3      t.*,
     4      if(@temp_a=t.A and @temp_b=t.B,@rank:=@rank+1,@rank:=1) rank,
     5      @temp_a:=t.A,
     6      @temp_b:=t.B
     7 from
     8      (select * from test order by A asc,B asc,C desc) t,
     9      (select @temp_a:=null,@temp_b:=null,@rank:=null) r
    10 ) ret
    11 where ret.rank > 1

    此 SQL 的关键点就是使用标记变量和空表对数据打 tag,也就是上面的 rank 变量,然后不断迭代判断,对打完标记的表进行过滤即可,用处很多,适当扩展可以实现很多复杂的查询。

  • 相关阅读:
    股票
    使用广播信道的以太网
    CSMA/CD 3
    可赎回债券
    matlab中的knn函数
    债券 账面值
    最优化作业 共轭梯度法 matlab代码
    债券和股票 溢价公式
    债券和股票
    CSMA/CD 续
  • 原文地址:https://www.cnblogs.com/jyuf/p/8556103.html
Copyright © 2011-2022 走看看