Mysql实现数据库row_number()的写法

6 篇文章 0 订阅

以下是固定的写法,实现其他逻辑按这个套路写就好,将字段替换成你想分组查询的字段即可

rank跟row_number()一样,过滤分组排序后的数据

SELECT id, name, create_time, rank
FROM (
    SELECT b.id, b.name, b.create_time
        , @rownum := @rownum + 1
        , IF(@pdept = b.bar_code, @rank := @rank + 1, @rank := 1) AS rank
        , @pdept := b.bar_code
    FROM (
        SELECT id, name, create_time FROM tablename
        GROUP BY id,name
        ORDER BY id, name
    ) b, (
            SELECT @rownum := 0, @pdept := ''
                , @rank := 0
        ) c
) result
HAVING rank < 2;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 5.7版本中,没有内置的ROW_NUMBER函数的写法。如果你需要实现类似ROW_NUMBER功能,可以使用变量和子查询来实现。以下是一种实现方式: ```sql CREATE TABLE TZ_DIAG_STAND SELECT * FROM ( SELECT @RN := CASE WHEN @DIAGNOSIS_NAME = DIAGNOSIS_NAME THEN @RN + 1 ELSE 1 END AS RN, @DIAGNOSIS_NAME := DIAGNOSIS_NAME AS DIAG_NAME, MASTER_ID, NUM FROM ( SELECT T1.DIAGNOSIS_NAME, MASTER_ID, COUNT(1) NUM FROM ( SELECT MASTER_ID, DIAGNOSIS_NAME FROM ICD_10 WHERE MASTER_ID IS NOT NULL AND DIAGNOSIS_NAME = '妊娠合并肠炎' ) T1 GROUP BY T1.DIAGNOSIS_NAME, MASTER_ID ORDER BY DIAGNOSIS_NAME, NUM DESC ) A, (SELECT @RN := 0, @DIAGNOSIS_NAME := 0) B ) A WHERE RN = 1; ``` 这个查询使用了变量@RN和@DIAGNOSIS_NAME来模拟ROW_NUMBER函数的功能,并在最外层的WHERE子句中选择RN等于1的记录。这样就可以获得诊断编码出现最多的记录。请注意,这只是一种实现方式,具体的查询语句可能会根据实际情况有所调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [MySQL5.7版本没有row_number函数的写法](https://blog.csdn.net/qq_43278973/article/details/120205035)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值