【问题标题】:Update data if not exists, otherwise add to table [duplicate]如果不存在则更新数据,否则添加到表中[重复]
【发布时间】:2011-10-16 09:12:35
【问题描述】:

可能重复:
How do I update if exists, insert if not (aka upsert or merge) in MySQL?

我正在创建一个简单的爬虫,从网站收集统计信息。我想要做的是,如果没有从 URL 抓取的记录然后插入到数据库,否则更新现有记录,但我不确定如何在不使用 php 的情况下执行此操作

SELECT * from table where url='somevalue'; 

如果没有记录

INSERT INTO...

否则

UPDATE...

【问题讨论】:

    标签: mysql


    【解决方案1】:

    【讨论】:

    • 问题是 url 不是唯一键:/
    • 那就做一个吧。没有这样的约束,就没有单一的查询解决方案。
    • 如果我想创建一个文本列的keyout,它必须有一定的长度,这不是我喜欢的(因为长度可以是随机的)更不用说最大长度可以是只有 767 字节
    • 将 URL 的哈希值存储在另一列中并将其用作键。固定长度并使用适当的散列算法,不太可能在两个不同的 URL 上发生冲突。
    • 是的,我做过类似的事情。我的脚本抓取的网站也将它们的唯一 ID 存储在 URL 中,所以我只是用简单的正则表达式提取它并使用简单的 bigint 作为唯一键。完美运行!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-12-10
    • 2016-11-19
    • 2014-11-29
    • 1970-01-01
    • 2015-07-04
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多