MySQL查询结果增加行号列

本文详细介绍了在MySQL查询结果集中新增一列作为行号的方法,包括使用自定义变量的三种解法及不使用自定义变量的子查询解法,为数据库操作提供了实用的技巧。

问题

如何在查询的结果中新增一列作为行号?

例现有结果集Greatersts

CREATE TABLE `Greatersts` (
  `key` varchar(32) DEFAULT NULL,
  `x` int(11) DEFAULT NULL,
  `y` int(11) DEFAULT NULL,
  `z` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `Greatersts` VALUES ('A', 1, 2, 3);
INSERT INTO `Greatersts` VALUES ('B', 5, 5, 2);
INSERT INTO `Greatersts` VALUES ('C', 4, 7, 1);
INSERT INTO `Greatersts` VALUES ('D', 3, 3, 6);

实现语句

使用自定义变量

解法一

使用SET定义变量

SET @row_num:=0;
SELECT (@row_num:=@row_num+1) AS row_num, a.*
FROM Greatersts AS a;

解法二

INNER JOIN

SELECT (@row_num:=@row_num+1) AS row_num, a.*
FROM Greatersts AS a 
INNER JOIN (SELECT @row_num:=0) b;

解法三

SELECT (@row_num:=@row_num+1) AS row_num, a.*
FROM Greatersts AS a, (SELECT @row_num:=0) b;

不使用自定义变量

解法四

使用子查询

SELECT (SELECT COUNT(*)+1 FROM Greatersts AS b WHERE b.`key` < a.`key`) AS row_num
	, a.* 
FROM Greatersts AS a;

查询结果

在这里插入图片描述

参考文献

1.Create a Cumulative Sum Column in MySQL [DB|OL] https://stackoverflow.com/questions/2563918/create-a-cumulative-sum-column-in-mysql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值