mysql - JSON_ARRAY_APPEND() 如果目标值为空则拒绝 Mysql
问题描述
这是场景,将用户 ID 添加到user_details
. 如果external_id
配置文件表中不存在怎么办,它会返回null
(select 语句返回null
)。
如何JSON_ARRAY_APPEND
拒绝查询并且不添加到user_details
JSON 列。
UPDATE column1 SET user_details= JSON_SET(user_details, "$.ids", IFNULL(user_details->'$.ids',JSON_ARRAY())),
user_details= JSON_ARRAY_APPEND(user_details, "$.ids", (Select id from column2 where external_id='999999999999999'))
where id = 880;
谢谢
解决方案
WHERE
在语句的子句中检查这一点UPDATE
。
UPDATE column1 SET user_details= JSON_SET(user_details, "$.ids", IFNULL(user_details->'$.ids',JSON_ARRAY())),
user_details= JSON_ARRAY_APPEND(user_details, "$.ids", (Select id from column2 where external_id='999999999999999'))
where id = 880
AND EXISTS (Select id from column2 where external_id='999999999999999')
或者使用 aJOIN
而不是嵌套子查询。
UPDATE column1 AS c1
CROSS JOIN column2 AS c2
SET user_details= JSON_SET(c1.user_details, "$.ids", IFNULL(c1.user_details->'$.ids',JSON_ARRAY())),
c1.user_details= JSON_ARRAY_APPEND(c1.user_details, "$.ids",c2.id)
WHERE c1..id = 880
AND c2.external_id = '999999999999999'
推荐阅读
- google-sheets - 如何将数组添加到 AVERAGEIF(S) 公式
- amazon-s3 - 模拟后未找到 Boto3 Moto 存储桶
- java - JComponent 可见性的奇怪问题
- xml - 为什么我不能将经过处理的 xmlData 传递给 SwiftUI 中的 ContentView?
- python - 如何在多个文件夹上运行 python 来创建 pdf?
- reactjs - 使用玩笑模拟测试 axios 获得未定义
- react-native - 移动应用的技术选择
- python - 列表理解中函数调用的多次返回
- python - Discord py message.createdat
- php - 如何解决php文件上传返回未知错误