mysql - 行号

1. 初始化数据 - 列唯一

DROP TABLE IF EXISTS `sales`;

CREATE TABLE `sales` (
  `empid` VARCHAR(10) NOT NULL,
  `mgrid` VARCHAR(10) NOT NULL,
  `qty` INT(11) NOT NULL,
  PRIMARY KEY (`empid`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

/*Data for the table `sales` */

INSERT  INTO `sales`(`empid`,`mgrid`,`qty`) VALUES (‘A‘,‘Z‘,300),(‘B‘,‘X‘,100),(‘C‘,‘X‘,200),(‘D‘,‘Y‘,200),(‘E‘,‘Z‘,250),(‘F‘,‘Z‘,300),(‘G‘,‘X‘,100),(‘H‘,‘Y‘,150),(‘I‘,‘X‘,250),(‘J‘,‘Z‘,100),(‘K‘,‘Y‘,200);

2. 查询 - 列唯一

SELECT empid,(
    SELECT COUNT(*) FROM sales T1 WHERE T1.empid <= T2.empid
) AS rownum
 FROM sales T2;

运行结果:

3. 按照qty和empid顺序生成行号 - 列唯一

 SELECT empid,qty,(
    SELECT COUNT(*) FROM sales T1 WHERE T1.qty < T2.qty OR (T1.qty=T2.qty AND T1.empid <= T2.empid)
 ) AS rownum
 FROM sales T2
 ORDER BY qty,empid;

运行结果:

4. 初始化数据 - 列重复

CREATE TABLE `t` (
    `a` CHAR (3)
);
INSERT INTO `t` (`a`) VALUES(‘X‘);
INSERT INTO `t` (`a`) VALUES(‘X‘);
INSERT INTO `t` (`a`) VALUES(‘X‘);
INSERT INTO `t` (`a`) VALUES(‘Y‘);
INSERT INTO `t` (`a`) VALUES(‘Y‘);
INSERT INTO `t` (`a`) VALUES(‘Z‘);

5. 查询 - 列重复

SELECT n.a,n.a+smaller AS rownum, C.a FROM(
    SELECT a, COUNT(*) AS countt, (
     SELECT COUNT(*) FROM t AS B WHERE B.a < A.a
    ) AS smaller
    FROM t AS A
    GROUP BY a
) AS C, nums AS n
WHERE n.a <= countt

运行结果:

时间: 2024-10-08 12:51:29

mysql - 行号的相关文章

mysql 行号 获取指定行数据

mysql 行号的实现 Select id,(@rowNum:[email protected]+1) as rowNo From first,(Select (@rowNum :=0) ) bOrder by first.id Desc 这样就可以实现mysql 的行号 获取指定行的数据可以使用limit 具体的使用如下: select * from first limit num,1 即可 mysql 行号 获取指定行数据,布布扣,bubuko.com

获取mysql行号最快最有效的方法

来源:http://blog.csdn.net/zht666/article/details/8854606有个小问题是,要把这句提前(select @rownum := 0)t,否则第一次查询行号会为空. 示例: select t1.* from (select @rownum := 0) t, ( select @rownum := @rownum + 1 as rownum, userid from t_user where login_date >= '2014-07-01' and l

mysql 取得行号后再排序

一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法. HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeM

查询中显示MySQL表中的行号

如果我们要想在查询中显示MySQL表的行号,这里我们需要借助在查询语句中定义一个变量.因为MySQL没有专门的显示行号的函数,这一点不像Oracle中的rownum 先来看一个MySQL数据库的表截图,这个截图是没有行号的显示效果 下面为了显示行号的SQL SELECT (@rownum:=@rownum+1) rownum, a.imgPath FROM tb_goods_img a,(SELECT (@rownum:=0)) b 有行号的截图如下 技术提升:我们一起来思考一个问题,虽然上面的

MYSQL获得查询记录的行号

对于获得查询记录的行号这一功能,Oracle 中可以使用标准方法(8i版本以上),也可以使用非标准的ROWNUM,MS SQL Server 则在 2005 版本中提供了ROW_NUMBER()函数.但在 MySQL 中似乎还没有这样的系统自带功能 = =!真是悲剧啊~ 好在民间的力量总是强大的,我们可以自己构造一个类似的功能! 表 a: UID Money 2 444 1 222 3 555 4 6666 想要以Money排序取得排行号:SQL文如下: Select UID,(@rowNum:

mysql 中关于获取行号@rownum:[email&#160;protected]+1

mysql中没有获取行号的函数,因此需要通过一些自定义语句来进行获取.通常做法是,通过定义用户变量@rownum来保存表中的数据.通过赋值语句@rownum:[email protected]+1来累加达到递增行号. 例如:select a.* ,@rownum:[email protected]+1 from a,(select @rownum:=0) r; 后半部分语句的select @rownum:=0 相当于创建了r的新表,其表的列为@rownum,数值为0. 通过利用变量将@rownu

mysql带行号查询

oracle中可以用rownum带行号输出,例如:select rownum,u.name,u.age from user u; 但是mysql里面没有rownum,所以怎么办嗯? 办法:SELECT @rownum:[email protected]+1 AS rownum, user.*  FROM (SELECT @rownum:=0) r, user; 原文地址:https://www.cnblogs.com/hyc-go/p/11126462.html

mysql获取行号

mysql获取行号,最简单的方式是使用全局变量 SELECT @rownum := @rownum + 1 AS id, cau.idcard FROM csf_user_auth cau, (select @rownum := 0) m WHERE cau.scene_id = 1 首先明白 “=” 和“:=” 的区别 在mysql中,“=”在select时候是“等于”的作用,不能做赋值使用,而“:="可以继续赋值 然后,在以上获取行号,每次查询把@rownum赋值为0,每一行都把@rownu

mysql 显示行号,以及分组排序

建表: CREATE TABLE `my_tb` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_code` varchar(255) DEFAULT NULL, `code` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; 初始数据: INSERT INTO `my_tb` ( `parent_