Sqlite 如何在现有表中每隔一行插入一个新表行?

Sqlite 如何在现有表中每隔一行插入一个新表行?,sqlite,syntax,insert,modulus,Sqlite,Syntax,Insert,Modulus,好的,我有一个sqlite数据库,大约有100行。这是一件奇怪的事情,我正试图这样做,但我需要插入一个新的行之间的每一个现有的行 我一直在尝试按如下方式使用Insert语句,但没有任何运气: insert into t1(column1) values("hello") where id%2 == 0 所以我基本上是想用%-操作符告诉我id是偶数还是奇数。对于每个偶数id号,我想插入一个新行 我错过了什么?我能做些什么不同的事情?如何在每一行中插入新行并更新索引 谢谢不要认为数据库中的行是预先

好的,我有一个sqlite数据库,大约有100行。这是一件奇怪的事情,我正试图这样做,但我需要插入一个新的行之间的每一个现有的行

我一直在尝试按如下方式使用Insert语句,但没有任何运气:

insert into t1(column1) values("hello") where id%2 == 0
所以我基本上是想用%-操作符告诉我id是偶数还是奇数。对于每个偶数id号,我想插入一个新行

我错过了什么?我能做些什么不同的事情?如何在每一行中插入新行并更新索引


谢谢

不要认为数据库中的行是预先排序的。数据库将在它们进入时或根据索引存储它们。您的任务是根据需要在检索时(即在查询数据时)对它们进行排序。

您的问题假设这些行具有某种内置顺序,并且您可以在其他行之间插入行。那不是真的

的确,行在磁盘上有顺序,并且
id
列通常是按顺序分配的,但这是一个实现细节。执行查询时,数据库可以按其选择的任何顺序自由返回行,除非使用
orderby
子句指定所需的内容

现在,我假设您真正想要的是按
id
顺序在现有行之间插入行。获取所需内容的一种方法如下:

UPDATE t1 SET id = id * 2
INSERT INTO t1 (id, column) SELECT id+1, "hello" FROM t1
UPDATE
将使所有现有行的ID加倍(因此1,2,3变为2,4,6);然后,
INSERT
将对t1执行查询,并使用结果插入一组新的行,其中
id
的值比现有行多一个(因此2,4,6变为3,5,7)


我还没有测试上述语句,所以我不知道它们是否有效,或者它们是否需要一些额外的技巧(比如临时表),因为我们在一个语句中查询和更新同一个表。另外,我可能犯了语法错误。

我很欣赏这一见解!我知道我的要求很不寻常,我很高兴你能给我一个解决方案。