2

我有两张桌子,即。Total_DataDistinct_S1

Total_Data有 350 万行。字段:“S1”、“S2”、“S3”、“S4”

Distinct_S1有 100 万行。字段:“S1”、“频率”。Distinct_S1的“ S1”由Total_Data的“S1”中出现的所有不同值组成。

手头的任务: Distinct_S1 for S1 = 'xxyy'的“频率” (假设)应该包括在Total_Data中出现 'xxyy' 的次数。

我在 python 脚本(导入 MySQLdb)中使用了以下查询来完成手头的任务:

cur.execute("update Distinct_S1 set frequency=(select count(*) from Total_Data where S1='%s') where S1='%s'"%(S1_val, S1_val)

上面的查询工作正常,但似乎需要很多时间。有没有其他更快的方法来达到同样的效果?

4

1 回答 1

1

您可以将多表更新语法与连接一起使用来一次更新所有行。有关语法,请参阅手册

但更简单的方法是直接在表中插入所有值,而无需先用不同的值填充它。

INSERT INTO Distinct_S1 (S1, frequency)
SELECT S1, COUNT(*)
FROM Total_Data
GROUP BY S1
于 2012-07-21T18:17:57.177 回答