MySQL есть ли способ проверить, присутствует ли строка в поле перед ее обновлением? - PullRequest
0 голосов
/ 10 июля 2020

Это мой код:

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, поэтому он добавляет новые узлы каждый раз, когда запрашивается элемент. Моя проблема в том, что если элементы выбираются дважды в одном и том же узле в моей базе данных, я нахожу что-то вроде «Узел1 - Узел2 - Узел2 - Узел 3». Итак, в этом примере Node2 присутствует дважды, можно ли проверить, присутствует ли Node2, и если он существует, не записывайте его снова.

1 Ответ

0 голосов
/ 10 июля 2020

Было бы лучше, если бы вы нормализовали свой дизайн. За исключением этого, лучшее, что вы можете сделать, - это искать совпадение в столбце:

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

Это не очень надежно, потому что оно также будет соответствовать, если новый узел является подстрокой одного из существующих узлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...