使用同一表中的ID更新多个sqlite行
我需要一些帮助来改进我的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)的最佳和
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秒)。