mysql数据库加行号例子

77 阅读1分钟

mysql数据库加行号例子

1.创建数据库 新增数据

CREATE TABLE books_goods (
	t_category_id int, 
	t_category VARCHAR(64), 
	t_name VARCHAR(64),
	t_price FLOAT(32),
	t_upper_time datetime
	);
INSERT INTO books_goods (t_category_id, t_category, t_name, t_price,t_upper_time) VALUES 
(1,'教育','计算机网络',40.0,'2020-11-10 00:00:00'),
(1,'教育','数据结构',58.0,'2020-11-10 00:00:00'),
(1,'教育','计算机系统',55.0,'2020-11-10 00:00:00'),
(2,'科幻','三体',30.0,'2020-11-10 00:00:00'),
(2,'科幻','流浪地球',35.0,'2020-11-10 00:00:00'),
(2,'科幻','产后护理',50.0,'2020-11-10 00:00:00')

image-20241225114818882.png

2.序号

1.mysql8.0可以用序号函数ROW_NUMBER()函数

ROW_NUMBER()函数能够对数据中的序号进行顺序显示。

SELECT ROW_NUMBER() over(PARTITION by t_category_id ORDER BY t_price DESC) AS row_num,
 t_category_id, t_category, t_name, t_price
FROM books_goods              

2.在 MySQL 5.7 中,由于不支持 ROW_NUMBER() 窗口函数,替代方法是使用变量来模拟 ROW_NUMBER() 的行为。

以下是一个示例,展示如何在 MySQL 5.7 中实现带有分区和排序的行号。

SELECT 
    @row_num:=IF(@current_category = t_category_id, @row_num + 1, 1) AS row_num,
    @current_category:=t_category_id AS t_category_id,
    t_category,
    t_name,
    t_price
FROM 
    books_goods,
    (SELECT @row_num:=0, @current_category:=NULL) AS vars
ORDER BY 
    t_category_id,
    t_price DESC;

image-20241225115024207.png