我有一个表,其中包含一个逗号分隔的列表(以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)中的字符串中,然后更新记录。
答案 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}
来构建查询。