mysql - 以最佳方式更新表数据

标签 mysql sql database

我每 3 小时通过查询获取 Twitter 数据。其中一个字段 url 是此处的关键。对于每个网址,我都有 retweet_count 值。

有时在接下来的 3 小时内我会得到与之前类似的 url 记录。但是 retweet_count 带有更新的新值。

在每个查询中,我都会获取超过 200 个网址。

一种方法是在每次插入期间检查该 url 是否存在。如果没有则直接插入。如果已经存在,则获取以前的 rt_count 值并与新值进行比较,如果不同则更新它。

渐渐地,我的数据将增长到表中缺乏记录。上述情况会花费太多的延迟。

有没有更好的方法来做到这一点?有什么乐观的解决方案吗?

$insertQuery2 = "INSERT INTO frrole_article_sentiment (`url`, `sentiment`, `title` , `time` , `img_url` , `rt_count` , `tweet_count`, `today`, `youtube_url`, `hash`) VALUES ('".$url."','".$sentiment."','".$title."','".$time."','".$img_url."','".$rt_count."','".$tweet_count."','".$today."', '".$is_youtube."', '".$hash."')";

                    if (!mysqli_query($con,$insertQuery2))

                    {

                        //die('Error: ' . mysqli_error($con));

                    }

最佳答案

由于您使用的是 MySQL,因此可以使用 ON DUPLICATE KEY UPDATE 功能: http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

您的查询将类似于:

INSERT INTO frrole_article_sentiment (url, rt_count)
VALUES('$url', '$rt_count')
ON DUPLICATE KEY UPDATE rt_count=$rt_count;

(“url”假定为 PK,为了简单起见缩短了查询,您应该包含所有字段)

关于mysql - 以最佳方式更新表数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21351797/

相关文章:

mysql - 如何在 MySQL 5.5 中执行 IFNULL(count(*),0)

mysql - 一个表可以有多个主键吗?

sql - sql db2 统计每个id在表中出现的次数

php - 监控某个数据库字段的使用情况

python - Django查询: "datetime + delta" as an expression

mysql - 比较 MYSQL 子查询中的日期

mysql - 使用 "between"和 select for "dates"

php - 尝试调用类中名为 "query"的未定义方法

mysql - 插入 SQL 数据库或更新特定值(如果已存在)

php - 在php中组合变量