gpt4 book ai didi

sqlite - 如何将新表行插入现有表的每隔一行?

转载 作者:行者123 更新时间:2023-12-03 17:55:23 32 4
gpt4 key购买 nike

好的,我有一个sqlite数据库,大约有100行。我想做的事情很奇怪,但是我需要在每个现有行之间插入一个新行。

我一直在尝试使用Insert语句,如下所示,但是没有任何运气:

insert into t1(column1) values("hello") where id%2 == 0


因此,我基本上是尝试使用%运算符告诉我ID是偶数还是奇数。对于每个偶数编号,我想插入一个新行。

我想念什么?我可以做些什么?如何将新行插入其他行并同时更新索引?

谢谢

最佳答案

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

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

现在,我假设您真正想要的是按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)。

我尚未测试以上语句,因此我不知道它们是否会工作,或者它们是否需要一些额外的技巧(例如临时表),因为我们正在一个语句中查询和更新同一表。另外我可能犯了语法错误。

关于sqlite - 如何将新表行插入现有表的每隔一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6528535/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com