mysql insert + select row_id

时间:2014-03-20 04:36:44

标签: mysql sql

假设我有两张表:

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)

1 个答案:

答案 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;

演示Example @ SQL Fiddle