选择插入索引?

时间:2016-06-20 18:30:27

标签: mysql sql

我正在尝试为我的项目使用SELECT INSERT;但是,需要填充插入的列之一对应于它在INSERT中的位置。我已经尝试使用子查询(如下所示)并且只使用SELECT的FROM子句中的表名 - 似乎都不起作用。

我得到的输出总是“10001”而不是我期望的(即“10001”,“10002”,“10003”等)

任何帮助?

INSERT INTO table
 (
  Key2
 )
SELECT 
 (SELECT IF(CAST(MAX(t.Key2) as UNSIGNED) IS NULL, "10001", CAST(MAX(t.Key2) as UNSIGNED)+1) FROM (select * from table) t)
FROM table2

2 个答案:

答案 0 :(得分:2)

如果需要枚举键,则使用变量:

INSERT INTO table (Key2)
    SELECT COALESCE(maxkey, 0) + (@rn := @rn + 1)
    FROM table2 CROSS JOIN
         (SELECT MAX(t.key) maxkey, @rn := 0 FROM table) x ;

答案 1 :(得分:0)

如果我理解你的问题,请尝试以下方法:

INSERT INTO TABLE (KEY2)
SELECT A.KEY2 + B.MAX_VAL AS KEY2 FROM TABLE A
JOIN (SELECT MAX(KEY2) AS MAX_VAL FROM TABLE) B
ON 1 = 1