Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用同一表中的ID更新多个sqlite行_Sqlite - Fatal编程技术网

使用同一表中的ID更新多个sqlite行

使用同一表中的ID更新多个sqlite行,sqlite,Sqlite,我需要一些帮助来改进我的SQLite数据库 现在,表的外观如下所示: ID |FORM |MAINFORM ---------------------- 1 |form |form 2 |formAB |form 3 |formBC |form 4 |sample |sample 5 |sampleAB |sample 6 |sampleBC |sample 将MAINFORM列中的数据从字符串格式更新为int格式(如从同一个表中获取的表单ID)的最佳和

我需要一些帮助来改进我的SQLite数据库

现在,表的外观如下所示:

ID |FORM     |MAINFORM
----------------------
1  |form     |form
2  |formAB   |form
3  |formBC   |form
4  |sample   |sample
5  |sampleAB |sample
6  |sampleBC |sample
将MAINFORM列中的数据从字符串格式更新为int格式(如从同一个表中获取的表单ID)的最佳和最快方法是什么

最后,我应该有这样的东西:

ID |FORM     |MAINFORM
----------------------
1  |form     |1
2  |formAB   |1
3  |formBC   |1
4  |sample   |4
5  |sampleAB |4
6  |sampleBC |4
因此,在本例中,“form”的ID=1,因此带有MAINFORM=“form”的所有行都将更新为MAINFORM=1。 MAINFORM可以是空的,但如果不是空的,它肯定会在表中的某个地方作为一个表单有相应的值(它将有ID)

目前,此表中约有600.000行。

您可以使用查找新值:

UPDATE MyTable
SET MainForm = (SELECT ID
                FROM MyTable AS T2
                WHERE T2.Form = MyTable.MainForm);

(如果查找失败,子查询将产生NULL值。)

请删除android sqlite和mysql标记。这显然与他们两人都无关。还请解释MAINFORM数值的来源,并给出表格结构。Hi@e4c5。CL.删除了标签(虽然它是针对Android应用程序的,所以:D),但无论如何都可以。另外,可能我有点不清楚,但在同一个表中可以找到MAINFORM数值。如MAINFORM中的值,可在列形式的表中找到。数字值就是它的ID。我知道有点混乱。但是CL.在他的回答中说吧。我只需要看看它是否会通过(以及需要多长时间),完成这60万行需要多长时间?我10分钟前开始查询。仍在进行中。
表单
列上的索引会很有用……是的。:)今天早上没有时间测试它。我对它的速度感到惊讶。非常感谢。工作起来很有魅力(4.8秒)。