我正在尝试为我的项目使用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
答案 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