在sql表中的两条记录之间添加新记录有语法吗


请建议如何在两条记录之间插入新记录。sql表中Id 2和4之间缺少记录/行的Id 3。

SQL表是无序的集合。您不能添加记录";在两个记录之间";,因为没有记录的顺序。即使您的查询似乎按某种顺序返回行,它也是完全任意的,除非您有明确的order by子句,否则很可能会发生更改。

换句话说,您应该只插入新行,如果您关心按id排序,请在查询中始终使用order by id

您可以在这里使用基于日历表的方法:

INSERT INTO yourTable (id)
SELECT t1.id
FROM
(
SELECT 1 AS id UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL
SELECT 4 UNION ALL SELECT 5
) t1
LEFT JOIN yourTable t2
ON t2.id = t1.id
WHERE
t1.id IS NULL;

在实践中,您可以将上面别名为t1的内联子查询替换为真正的序列表,该序列表覆盖了您想要覆盖的所有id值。

最新更新