常见查询场景
增加排名字段
# 建表
CREATE TABLE user (id int, name varchar(20), age int, gender char(1));
# 测试数据
INSERT INTO user VALUES (1, 'Bob', 25, 'M');
INSERT INTO user VALUES (2, 'Jane', 20, 'F');
INSERT INTO user VALUES (3, 'Jack', 30, 'M');
INSERT INTO user VALUES (4, 'Bill', 32, 'M');
INSERT INTO user VALUES (5, 'Nick', 22, 'M');
INSERT INTO user VALUES (6, 'Kathy', 18, 'F');
INSERT INTO user VALUES (7, 'Steve', 36, 'M');
INSERT INTO user VALUES (8, 'Anne', 25, 'F');SELECT name,
age,
gender,
@curRank := @curRank + 1 AS rank
FROM user, (SELECT @curRank := 0) r
ORDER BY age;分组后取组内TOP 1或者Top N
TOP 1
方案1:自连接
方案2:子查询
TOP N
方案1:使用UNION ALL
方案2:自身左连接
方案3:子查询
方案4 :使用用户变量
参考
Last updated