如果行中的MySQL更新字段不包含值

时间:2018-10-07 15:26:20

标签: mysql node.js

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

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

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

这将替换整个记录。我只想将memberId添加到t(如果不存在)。

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)中的字符串中,然后更新记录。

1 个答案:

答案 0 :(得分:1)

使用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}来构建查询。