zoukankan      html  css  js  c++  java
  • MySql实现Oracle的row_number()over(partition by ... order by ...)

    SELECT
    IF(t1.id = @id,@rownum := @rownum + 1,@rownum := 1)AS rownum,
    t1.*,
    @id := t1.id
    FROM
    (SELECT
    @rownum := 0,@id := NULL) r,
    test1 t1
    ORDER BY t1.id,t1.starttime DESC

    语法解析:

    以id和starttime进行排序可以理解为id分组内starttime排序;

    test1表关联@rownum :=0,@id :=null,在select中if判断@id是否等于当前行的id,因为初始为null,所以@rownum :=1,当id变化的时候,@id还是上一个id的值,此时@rownum重置为1,注意@id :=t1.id一定要放在if判断后面。

  • 相关阅读:
    HDU-1561
    POJ 1088
    UESTC-878
    CodeForces
    HDU 5753
    HDU 1568
    二分图入门题
    二分图匹配入门题
    树形dp入门
    UVA
  • 原文地址:https://www.cnblogs.com/angry-scholar/p/7597022.html
Copyright © 2011-2022 走看看