mysql有没有办法在更新字段之前检查字段中是否存在字符串?

kyxcudwk  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(240)

这是我的密码:

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是否已经在我的数据库中,如果它已经存在,它更新所有字段覆盖当前数据,除了nodes字段,因为我添加了concat函数,所以每次查询项目时它都会添加新的节点。我的问题是,如果在我的数据库中的同一个节点中两次提取项目,我会发现类似“node1-node2-node2-node3”的内容。所以在这个例子中node2出现了两次,是否可以检查node2是否已经存在,如果存在就不要再写它。

idfiyjo8

idfiyjo81#

如果你能规范化你的设计就更好了。除此之外,您只能在列中搜索匹配项:

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

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

相关问题