MySQL 对子查询使用 JSON_CONTAINS
MySQL use JSON_CONTAINS with a subquery
我正在尝试在 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),
'$'
) ;
但是由于子查询 returns Client
而不是 "Client"
JSON_CONTAINS 不接受该值。
ERROR 3141 (22032): Invalid JSON text in argument 1 to function json_contains: "Invalid value." at position 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
可能表现不一致
我正在尝试在 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),
'$'
) ;
但是由于子查询 returns Client
而不是 "Client"
JSON_CONTAINS 不接受该值。
ERROR 3141 (22032): Invalid JSON text in argument 1 to function json_contains: "Invalid value." at position 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
可能表现不一致