行中的mysql update字段(如果不包含值)

2izufjch  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(435)

我有一个表,它有一个逗号分隔的列表(以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)中的字符串中,然后更新记录。

wljmcqd8

wljmcqd81#

使用 FIND_IN_SET 分析字符串值并确定该id是否存在于逗号分隔的列表中。
有关详细信息,请参阅完整文档 FIND_IN_SET 在这里:
https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_find-成套
psuedo查询将是:

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

当然,插值 ${rowId} 根据需要生成查询。

相关问题