Mysql避免重复的URLS

时间:2012-09-02 15:07:09

标签: mysql sql

是否有SQL语句来检查字段是否存在? 例: 我有一个包含以下内容的数据库:URL, IsCrawled, Level等等。 我需要检查URL是否已经存在。 我不关心其他领域。 我正在写一个非常快速的爬虫,这是必要的。

3 个答案:

答案 0 :(得分:3)

ALTER TABLE `table`
ADD UNIQUE INDEX `urls` (`URL`)

或简单,

ALTER TABLE `table`
ADD UNIQUE(`URL`);

虽然,我使用第一种方法。只阅读了第二种方法。 可能不是这样

答案 1 :(得分:1)

这是你想要的吗?

SELECT COUNT(*)
FROM tableName
WHERE `URL` = 'urlHERE'

如果不存在0,则结果为URL。或者在字段ALTER TABLE tableName ADD CONSTRAINT indexName UNIQUE (`Url`)

上添加唯一索引
Insert

以这种方式,如果您插入已存在的网址,{{1}}语句将失败。

答案 2 :(得分:1)

为什么不在任何索引下使用普通选择:

SELECT ID FROM TABLE WHERE URL = @URL

如果select不为null,那么已经有一个。

现在,根据您的问题,另一个更好的想法是添加UNIQUE CONSTRAINT,因此通过设计,您的数据库将不允许重复该值。

现在,如果你只想比较部分URL来查看(即域名),那么你可以使用LIKE比较函数来查看是否已经存储了一个具有相同域的URL名。