首页 > 解决方案 > MySQL 更新行中的字段,如果它不包含值

问题描述

我有一个表,其中有一个逗号分隔的列表(以 VARCHAR 的形式),如果该列表中的用户 ID 不存在,我想更新该列表。

我正在从 Node.js 应用程序运行该语句。我不完全确定我将如何通过 SQL 语句来做到这一点。这是我所拥有的:

'UPDATE `tablename` SET `t` = "' + memberId + '" WHERE rowId = ' + id

这将取代整个记录。t如果它不存在,我只想添加 memberId 。

t看起来像这样:'1652,47,245,783,2,3,55,738,2306';

所以如果我想加 15,它应该是'1652,47,245,783,2,3,55,738,2306,15';

我想在 SQL 语句中执行此操作,而不是提取字段数据,然后将其添加到 JavaScript (Node.js) 中的字符串中,然后更新记录。

标签: mysqlnode.js

解决方案


用于FIND_IN_SET分析您的字符串值并确定该 ID 是否存在于该逗号分隔列表中。

在此处查看完整文档FIND_IN_SET

https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_find-in-set

伪查询将是:

UPDATE `tablename` SET `t` = CONCAT(t, ',15) 
WHERE rowId = ${rowId} AND FIND_IN_SET('15', t) = 0

当然,${rowId}根据需要进行插值以构建您的查询。


推荐阅读