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
比较并复制SQLITE表中的值_Sql_Sqlite - Fatal编程技术网

比较并复制SQLITE表中的值

比较并复制SQLITE表中的值,sql,sqlite,Sql,Sqlite,我有一个带有2个表的SQLITE数据库。这些表具有以下结构: TABLE1 (about 2000000 records) id|name|number1|number2|...|... 1|aaa |12.23 |43.17 |...|... 2|bbb |54.145 |77.23 |...|... 3|ccc |65.2345|13.234 |...|... TABLE2 (about 1500000 records) id|name|number1|number2 1|ddd |

我有一个带有2个表的SQLITE数据库。这些表具有以下结构:

TABLE1 (about 2000000 records)
id|name|number1|number2|...|...
1|aaa |12.23  |43.17  |...|...
2|bbb |54.145 |77.23  |...|...
3|ccc |65.2345|13.234 |...|...

TABLE2 (about 1500000 records)
id|name|number1|number2
1|ddd |100.121|12.32
2|bbb |76.223 |11.45
3|eee |55.23  |32.1
我需要这样做:

对于表1中的每条记录,查找是否存在同名的表2记录; 如果是,例如bbb记录,我需要将表1 54.145、77.23的编号1和编号2替换为表2 76.223、11.45的值; 如果没有,例如aaa和ccc记录,我需要在表12.23、43.17和65.2345、13.234的数字1和数字2中添加一个随机数。随机数必须介于0.01和0.30之间; 什么是最好、更快的方法


我可以使用SQLITE编辑器吗?哪种方法?

可能是未经测试的方法:

UPDATE TABLE1
SET
      number1 = (SELECT COALESCE(MAX(TABLE2.number1), (CAST(ABS((RANDOM()%30)) AS INT)+1) / 100)
                            FROM TABLE2
                            WHERE TABLE2.name = TABLE1.name),
      number2 = (SELECT COALESCE(MAX(TABLE2.number2), (CAST(ABS((RANDOM()%30)) AS INT)+1) / 100)
                            FROM TABLE2
                            WHERE TABLE2.name = TABLE1.name);
通过在TABLE1和TABLE2表中的name列上创建索引,可以加快查询速度

参考资料:


请编辑您的问题并提供示例数据和所需结果。描述不完全清楚。@GordonLinoff我添加了一个小例子。我希望这能帮助您帮助我。这不会添加随机数,SQLite也不会这样工作。@CL。谢谢您的反馈!我现在已经更正了语法。首先,将随机数除以30。余数的绝对值向下四舍五入到最接近的整数0-29,1加1-30,然后除以100 0.01-0.30。@JosephB但如果找到与TABLE2同名的TABLE1记录,您的查询将添加随机值,对吗?如果是的,我不需要它,请再次阅读我的问题,我已经编辑它,我认为现在它更清楚。