mysql插入+选择row_id

标签 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,第二行 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;

演示:Example @ SQL Fiddle

关于mysql插入+选择row_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22523604/

相关文章:

javascript - 地理编码不适用于 php mysql 提交表单

mysql - 删除 SQL 中的 NULL 值 JOIN 和 SQL 中的 UNION 运算符

mysql - 通过MSSQL复制将MSSQL数据库复制到MySQL

php - 数组到字符串的转换——关联数组

sql - 使用别名使此 SQL 语句正确

javascript - 自动完成未在文本框中显示所选值

php - MySQL 无法插入带有外键的记录?

php - 我想做一个论坛

php - 将数组作为参数列表传递给非用户定义的函数

mysql - 用于根据多个表的汇率更新产品价格的 SQL