国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql中類似oracle的over row_number 的性能實現

2024-07-24 12:31:53
字體:
來源:轉載
供稿:網友
       從網上找了很多資料,參考了如下鏈接,完成了一個需求:下一行的開始時間,作為上一行開始時間的結束時間。
 
       以下是自己做的,可以忽略
-- 說明如下:
-- 先按照設備號,用戶id,book_id,閱讀時間 排序
-- 然后按照設備號分組,對組內的數據按時間 依次編號
 
 
-- 首先last_device_num 為空,
-- 第一行判斷 device_num = null,所以賦值1,并把第一行的device_num 傳遞給last_device_num;
-- 第二行時,判斷device_num是否等于上一行的device_num(即last_device_num),如果等,則遞增,否則為1。
-- 第二行,純粹是用來賦值。
 
 
UPDATE
  xxx p,
  (SELECT
    n.id,
    n.begin_time,
    m.begin_time AS end_time,
    TIMESTAMPDIFF(
      SECOND,
      n.begin_time,
      m.begin_time
    ) AS interva
  FROM
    (SELECT
      id,
      device_num,
      begin_time,
      IF(
        @last_device_num = a.device_num,
        @rank := @rank + 1,
        @rank := 1
      ) AS row_number,
      @last_device_num := a.device_num
    FROM
      (SELECT
        *
      FROM
        xxx
      ORDER BY device_num,
        user_id,
        book_id,
        begin_time ASC) a,
      (SELECT
        @rownum := 0,
        @last_device_num := NULL,
        @rank := 0) b) m
    RIGHT JOIN
      (SELECT
        id,
        device_num,
        begin_time,
        IF(
          @last_device_num1 = a.device_num,
          @rank1 := @rank1 + 1,
          @rank1 := 2
        ) AS row_number,
        @last_device_num1 := a.device_num
      FROM
        (SELECT
          *
        FROM
          xxx
        ORDER BY device_num,
          user_id,
          book_id,
          begin_time ASC) a,
        (SELECT
          @rownum1 := 0,
          @last_device_num1 := NULL,
          @rank1 := 1) b) n
      ON m.row_number = n.row_number
      AND m.device_num = n.device_num) q
SET
  p.`end_time` = q.end_time,
  p.`read_time` = q.interva
WHERE p.id = q.id
 

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 白河县| 襄城县| 义乌市| 肥乡县| 安阳县| 马鞍山市| 周宁县| 河东区| 琼结县| 长乐市| 岗巴县| 江陵县| 朔州市| 三台县| 阿尔山市| 祁连县| 克山县| 汝南县| 阿克苏市| 诸城市| 惠州市| 名山县| 辛集市| 上虞市| 兴业县| 延安市| 安顺市| 雷山县| 安龙县| 崇左市| 宜城市| 郎溪县| 遵化市| 达孜县| 竹山县| 古交市| 德钦县| 游戏| 镇赉县| 景洪市| 万全县|