SQLite循环语句?
在SQLite中有没有循环语句,如FOR ..在.. LOOP或类似的东西?我有两列StartRange,EndRange,我需要在其他表中插入整个序列.因此,如果StartRange为1,EndRange为3,则需要使用三个带有值的插入,包含1,2,3.
如果您有一个额外的表,其中包含您需要的所有整数,您可以在直SQL中执行此类操作.
假设您的StartRange和EndRange范围介于1到10之间,并且有如下表格: sqlite> select i from ints; i 1 . . . 10 这个表格只包含你需要的所有可能的整数(即一到十个). 那么如果你也有这个: sqlite> create table t (startrange int not null,endrange int not null); sqlite> insert into t values(1,3); sqlite> create table target (i int not null); 您可以使用连接将您的INSERT作为目标: insert into target (i) select ints.i from ints join t on (ints.i >= t.startrange and ints.i <= t.endrange) 结果是这样的: sqlite> select * from target; i 1 2 3 当然,你真正的t会有更多的行,所以你想要一个WHERE子句来限制你看哪一行. 类似的东西往往是用日期(查找“日历表”)完成的. 所以如果你的范围很小(对于一些小的定义),然后生成你的ints表一次,添加一个索引到它,并使用上面的技术来完成数据库内的所有INSERT.其他数据库有自己的方式(如PostgreSQL的 SQL通常是基于set的,所以循环不是自然的.通过描述你需要什么来构建适当的套件是什么自然的. OTOH,有时非自然的行为是必要和明智的. 我不知道这是否适用于您的应用程序,我只是想我会演示如何做到这一点.如果这种方法在你的情况下没有意义,那么你可以在数据库之外生成一堆INSERT语句. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |