是否有在 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中的每条记录检索表中的两条记录

如何用通配符比较同一张表中的两条记录?

如何合并 MySQL 表中的两条冗余记录,维护所有 PK/FK 关系?

请问如何使用SQL语句查询同一张表中互为相反数的两条记录!如A1=500,A2=-500,如何写SQL语句

减去表中同一列的两条记录