是否有在 sql 表中的两条记录之间添加新记录的语法?
Posted
技术标签:
【中文标题】是否有在 sql 表中的两条记录之间添加新记录的语法?【英文标题】:Is there any syntax for adding new record between two records in sql table? 【发布时间】:2020-12-26 10:56:19 【问题描述】:请建议如何在两条记录之间插入新记录。 sql 表中id 2 和4 之间的记录/行的id 3 缺失。
【问题讨论】:
只需插入行3
。
【参考方案1】:
SQL 表是无序集。您不能在“两条记录之间”添加记录,因为记录没有顺序。即使您的查询似乎以某种顺序返回行,这也是完全任意的,除非您有明确的 order by
子句,否则很可能会发生变化。
换句话说 - 您应该只插入新行,如果您关心按 id 排序,请始终在查询中使用 order by id
。
【讨论】:
【参考方案2】:您可以在这里使用基于日历表的方法:
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
值。
【讨论】:
以上是关于是否有在 sql 表中的两条记录之间添加新记录的语法?的主要内容,如果未能解决你的问题,请参考以下文章
SQL 如何将一个表中的两条或多条拥有相同ID的记录合并为一条?
如何合并 MySQL 表中的两条冗余记录,维护所有 PK/FK 关系?