假设我有两个表:
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,第二行 XXX = 2。
这可能吗?
(or XXX = 0 for the first row, and i will do XXX+1 in select)
最佳答案
MySQL 中没有这样的ROW_NUM
。在运行 SELECT
语句时生成它并使用。
示例:
INSERT INTO ladder (user_id, rank)
SELECT
user_id, @r:=(@r + 1 )
FROM
myuser,
( SELECT @r:=0 )
ORDER BY rating;
关于mysql插入+选择row_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22523604/