小编典典

如何使用SQL-INSERT'N N重复键更新?

sql

我有一个脚本,可捕获推文并将其放入数据库中。我将在cronjob上运行脚本,然后从数据库中在我的网站上显示推文,以防止达到twitter API的限制。

所以我不想在我的数据库中有重复的tweet,我知道我可以使用’INSERT … ON DUPLICATE KEY
UPDATE’来实现,但是我不太了解如何使用它。

我的数据库结构如下。

表格-哈希ID(auto_increment)鸣叫用户user_url

目前我要插入的SQL如下:

$tweet = $clean_content[0];
$user_url = $clean_uri[0];
$user = $clean_name[0];

$query='INSERT INTO hash (tweet, user, user_url) VALUES ("'.$tweet.'", "'.$user.'", "'.$user_url.'")';
mysql_query($query);

我如何正确地使用“ INSERT … ON DUPLICATE KEY UPDATE”仅在不存在时插入,而在不存在时进行更新?

谢谢


阅读 263

收藏
2021-04-22

共1个答案

小编典典

您需要在表上有一些UNIQUE KEY,如果user_url是tweer_url,则此大小应该合适(每条tweet都有唯一的url,id会更好)。

CREATE TABLE `hash` (
  `user_url` ...,
  ...,
  UNIQUE KEY `user_url` (`user_url`)
);

最好在您的情况下使用INSERT IGNORE

$query='INSERT IGNORE INTO hash (tweet, user, user_url) VALUES ("'.$tweet.'", "'.$user.'", "'.$user_url.'")';

当您需要更新现有行但只想插入一次时,ON DUPLICATE KEY很有用

2021-04-22