MYSQL从子查询插入排序值

MYSQL从子查询插入排序值,mysql,Mysql,我有以下MYSQL INSERT语句: SET @x = 0; INSERT INTO Table1 (col1, sortOrder, col3) SELECT 'col1', (@x:=@x+1), col3 FROM Table2 WHERE col4 = XYZ ORDER BY col3 我想用以下查询的结果替换(@x:=@x+1),该查询返回sortOrder中的下一个可用数字: SELECT min( rank ) AS Num FROM (SELECT num, @curRan

我有以下MYSQL INSERT语句:

SET @x = 0;
INSERT INTO Table1 (col1, sortOrder, col3)
SELECT 'col1', (@x:=@x+1), col3 FROM Table2 WHERE col4 = XYZ ORDER BY col3
我想用以下查询的结果替换(@x:=@x+1),该查询返回sortOrder中的下一个可用数字:

SELECT min( rank ) AS Num
FROM (SELECT num, @curRank1 := @curRank1 +1 AS rank
FROM (SELECT sortOrder AS num
FROM Table1 WHERE col4 = XYZ
UNION
SELECT sortOrder AS num
FROM Table1 WHERE col4 = XYZ)a1, (SELECT @curRank1 :=0) r
ORDER BY num ASC)tab
WHERE num != rank

您当前的代码甚至无法运行。请显示示例数据,说明您希望
Table1
如何处理插入。使排序器自动递增并在数据库中唯一,它将自动选择下一个可用的编号。插入时无需放置任何逻辑。@TimBiegeleisen我已修复了示例-对此表示抱歉。@somsgod不幸的是,每个示例都有多组数据使用他们自己的排序器,这意味着我们不能使列自动递增。这里没有内置的sql函数可以帮助您,我无法想象它会有什么用处,扩展问题以解释您试图实现的内容将是有趣的,并且可能会提示另一种方法。如果您必须这样做,那么您必须自己编写代码——如果您有前端技术(php?),您可能希望在那里而不是在mysql中进行。