mysql - 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) 中的字符串中,然后更新记录。
解决方案
用于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}
根据需要进行插值以构建您的查询。
推荐阅读
- android - LinearProgressIndicator 颤振使用
- python - 安装 rpy2 时的 Visual Studio cl.exe 错误
- mongodb - 在 MongoDB 中重命名数组中的字段
- html - Flexbox 布局堆叠的列和行
- google-search - 如何通过谷歌的部分网址查找网页
- javascript - 使用时间戳获取未读消息的数量
- oracle - 如何通过 Spark 加快将 Oracle 视图加载到 HDFS 中?
- r - 获取 PDF 中嵌入的表格数量
- twilio - 向 Twilio SMS 电话号码发送电子邮件 - 网关是什么?
- go - 检索任意映射变量的键