select语句序号mysql_mysql为select结果集添加序号列

两个函数简单搞定

DELIMITER $$

USE `oso_isp`$$

DROP FUNCTION IF EXISTS `rownum_reset`$$

CREATE FUNCTION `rownum_reset`() RETURNS INT(11)

BEGIN

SET @rno = 0;

RETURN 1;

END$$

DELIMITER ;

DELIMITER $$

USE `oso_isp`$$

DROP FUNCTION IF EXISTS `rownum`$$

CREATE FUNCTION `rownum`() RETURNS INT(11)

BEGIN

/* 用法如:

SELECT

`rownum`(

) AS `id`,

t.*

FROM TABLE t

WHERE rownum_reset() = 1

*/

SET @rno = @rno + 1;

RETURN @rno;

END$$

DELIMITER ;

查询结果测试

测试代码:

SELECT

`rownum`(

)AS `row_num`

,`a`.`stock_in_date` AS `stock_in_date`

,`a`.`dinner_type` AS `dinner_type`

,`a`.`stockroom_id` AS `stockroom_id`

,SUM(`a`.`dinner_num`)

AS `dinner_num`

,SUM((SELECT SUM(`wh_stock_in_order_item`.`total_price`) FROM `wh_stock_in_order_item` WHERE (`wh_stock_in_order_item`.`stock_in_order_id` = `a`.`id`)))

AS `total_price`

,COUNT(0)

AS `order_num`

,GROUP_CONCAT(DISTINCT (SELECT `staff`.`name` FROM `staff` WHERE (`staff`.`id` = `a`.`buyer_id`)) SEPARATOR ',') -- 行变列

AS `buyer_name`

FROM `wh_stock_in_order` `a`

WHERE ((`a`.`is_deleted` = 0)

AND (`a`.`status` = 1)

AND (`rownum_reset`() = 1)) -- 初始化序号列从1开始

GROUP BY `a`.`stock_in_date`,`a`.`dinner_type`,`a`.`stockroom_id`

ORDER BY `a`.`stock_in_date`,`a`.`dinner_type`

返回结果:

7829fbfeb11dd637155ace128216f344.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值