假设我有两张表:
create table ladder (
user_id INT UNSIGNED NOT NULL PRIMARY KEY
, rank INT UNSIGNED NOT NULL UNIQUE
);
create table myuser (
user_id INT UNSIGNED NOT NULL PRIMARY KEY
, rating INT UNSIGNED NOT NULL
);
myuser包含一个评级,其中较高的评级代表更好的用户。 阶梯是排名表,排名范围从1,2,3,4,5 ......在哪里 具有rank = 1的user_id具有最高评级。
好的,当我执行INSERT + SELECT时:
DELETE FROM ladder; -- clean the table first
INSERT INTO ladder (user_id, rank) SELECT user_id, XXX FROM myuser ORDER BY rating;
然后我需要像XXX这样代表SELECT myuser的ROW id, 所以XXX = 1表示第一行,2表示第二行。
这可能吗?
(or XXX = 0 for the first row, and i will do XXX+1 in select)
答案 0 :(得分:2)
ROW_NUM
中没有此类MySQL
。在运行SELECT
语句时生成它并使用。
示例强>:
INSERT INTO ladder (user_id, rank)
SELECT
user_id, @r:=(@r + 1 )
FROM
myuser,
( SELECT @r:=0 )
ORDER BY rating;