mysql oracle over_MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能

该博客介绍了如何使用SQL创建并调用存储过程,涉及临时表、LIMIT分页及JOIN查询。内容包括删除已存在的存储过程和临时表,然后定义一个新的存储过程,该过程根据用户ID获取最新消息,并按时间降序返回指定数量的结果。
摘要由CSDN通过智能技术生成

DROP PROCEDURE

IF EXISTSPROCE_USER_NEW_MSG;DROP TEMPORARY TABLE

IF EXISTSTEM_USER_NEW_MSG;

DELIMITER||

CREATE PROCEDUREPROCE_USER_NEW_MSG (IN FRIST_RESULT INT,IN FETCH_SIZE INT)BEGIN

SELECTM.MESSAGE_ID,

M.GET_USER_ID,

M.SEND_USER_ID,

M.MESSAGE_CONTEXT,

M.CREATE_TIME,

G_U.USER_NAME ASG_USER_NAME,

S_U.USER_NAME ASS_USER_NAME,

G_H.GENERAL_PIC_THUMBNAIL_URLASG_HEADER,

S_H.GENERAL_PIC_THUMBNAIL_URLASS_HEADERFROMT_SD_MESSAGE MLEFT JOIN T_SD_USER G_U ON M.GET_USER_ID = G_U.USER_ID

LEFT JOIN T_SD_USER S_U ON M.SEND_USER_ID = S_U.USER_ID

LEFT JOIN T_SD_GENERAL_PICTURE G_H ON G_H.GENERAL_PICTURE_ID =G_U.USER_HEADER_PIC_IDLEFT JOIN T_SD_GENERAL_PICTURE S_H ON S_H.GENERAL_PICTURE_ID =S_U.USER_HEADER_PIC_IDWHEREM.MESSAGE_IDIN(SELECTMESSAGE_IDFROM(SELECTMESSAGE_ID,

RANK,

MESSAGE_CONTEXT,

CREATE_TIMEFROM(SELECTSRC.*,IF(@V_USER_ID = USER_ID ,@V_RANK := @V_RANK + 1 ,@V_RANK := 1)AS RANK ,@V_USER_ID := USER_ID ASG_USER_IDFROM(SELECTMESSAGE_ID,USER_ID,

CREATE_TIME,

MESSAGE_CONTEXT,

GET_USER_ID,

SEND_USER_IDFROM(SELECTMESSAGE_ID,

GET_USER_ID,

SEND_USER_ID,

GET_USER_IDAS USER_ID,

CREATE_TIME,

MESSAGE_CONTEXTFROMT_SD_MESSAGEWHEREGET_USER_ID!= '3000'

UNION ALL

SELECTMESSAGE_ID,

GET_USER_ID,

SEND_USER_ID,

SEND_USER_IDAS USER_ID,

CREATE_TIME,

MESSAGE_CONTEXTFROMT_SD_MESSAGEWHERESEND_USER_ID!= '3000') METADATAORDER BY

USER_ID ASC,

CREATE_TIMEDESC) SRC,

(SELECT

@V_RANK = 0,@V_USER_ID := NULL) VARS

) SRCWHERERANK= 1

ORDER BYCREATE_TIMEDESC) SRC

)ORDER BYM.CREATE_TIMEDESCLIMIT FRIST_RESULT,

FETCH_SIZE ;END||DELIMITER ;--LIMIT FRIST_RESULT ,FETCH_SIZE

CALL PROCE_USER_NEW_MSG (0, 2);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值