MySQL有没有一种方法可以在更新前检查字段中是否存在字符串?

时间:2020-07-10 15:38:32

标签: mysql sql database

这是我的代码:

mysql.query("INSERT INTO CategorieItems (productid, title, image, rating, price, reviews, nodes) 
            VALUES ? 
            ON DUPLICATE KEY UPDATE 
            title=VALUES(title), image=VALUES(image), rating=VALUES(rating), price=VALUES(price), reviews=VALUES(reviews), nodes = CONCAT(IFNULL(nodes, ''), CONCAT(' - ', nodes))", 
        [itemArray]);

我正在抓取一个网站,它将所有信息保存在我的mysql数据库中,现在我的查询代码检查productid是否已在我的数据库中,如果已经存在,它将更新所有字段,覆盖当前数据,但节点字段除外,因为我添加了concat函数,因此每次查询该项目时都会添加新节点。 我的问题是,如果在数据库的同一节点中两次提取项目,则会发现类似“ Node1-Node2-Node2-Node 3”的内容。因此,在此示例中,Node2出现了两次,是否可以检查Node2是否已经存在,如果存在则不再写。

1 个答案:

答案 0 :(得分:0)

最好将设计标准化。除非如此,否则您最好的办法就是在该列中搜索匹配项:

nodes = IF(LOCATE(VALUES(nodes), nodes), 
            nodes, 
            CONCAT(IFNULL(nodes, ''), ' - ', VALUES(nodes)))

这不是很可靠,因为如果新节点是现有节点之一的子串,它也会匹配。