mysql - MySQL 使用带有子查询的 JSON_CONTAINS
问题描述
我正在尝试在内部进行子查询JSON_CONTAINS
以获得这样的结果
SELECT * FROM addresses JSON_CONTAINS(`groups`, '"Client"', '$') ;
这是我尝试过的
SELECT * FROM addresses JSON_CONTAINS(
`groups`,
(SELECT u.group FROM users u WHERE u.email = 'example@email.org' LIMIT 1),
'$'
) ;
但是由于 subery 查询返回Client
而不是"Client"
JSON_CONTAINS 不接受该值。
错误 3141 (22032):函数 json_contains 的参数 1 中的 JSON 文本无效:“值无效。” 在位置 0。
解决方案
您可以在子查询中连接双引号:
SELECT *
FROM addresses
WHERE JSON_CONTAINS(
`groups`,
(SELECT CONCAT('"', u.group, '"') FROM users u WHERE u.email = 'example@email.org' LIMIT 1),
);
请注意,这$
是 的第三个参数的默认值JSON_CONTAINS()
。
我对子查询很怀疑:
您不想将其与外部查询相关联吗?
LIMIT
没有ORDER BY
可能不会表现一致
推荐阅读
- python - Discord BOT,我想给每个人发送一个随机报价,除了一个用户
- amazon-web-services - SQS:AWS.SimpleQueueService.UnsupportedOperation:不支持 SendMessage 操作中的消息属性列表值
- python - AttributeError:“超级”对象在部署时没有属性“get_params”
- spring-boot - Spring Boot 缓存功能不需要 spring-boot-starter-cache
- telegram-bot - 电报机器人不接收来自频道的消息
- r - R中从“字符”到“双”的映射
- ios - 聆听音量按钮按正确方式(iOS 15)
- angular - Angular 和 Jasmine 使用谷歌提供商测试 firebase 身份验证无法读取属性
- django - 停止 Celery 缓存 Django 模板
- reactjs - 使用 Redux-toolkit 的 Jest 测试组件,“Store 没有有效的 reducer”