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')
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;