如何在MySQL JSON表中使用where子句进行查询

8

我正在使用mysql 5.7.x

我可以创建一个mysql json表

 CREATE TABLE t1 (jdoc JSON);

我可以插入行。

INSERT INTO t1 VALUES('{"key1": "value1", "key2": "value2"}');
INSERT INTO t1 VALUES('{"key1": "value11", "key2": "value22"}');

我也可以获取所有行:

SELECT * from t1;

我该如何使用 where 子句?

select * from t1 where "key1" = "value1"

我应该如何在“OR”条件下搜索多个键(key1,key2等)中的value1? - YDF
1个回答

20

您可以尝试:

SELECT *
FROM t1
WHERE json_extract(jdoc, '$.key1')='value1'

SELECT * FROM t1 WHERE json_extract(jdoc, "key1") = "value1"; 错误 3143 (42000):无效的 JSON 路径表达式。错误位置在'key1'的字符位置1附近。 - Tampa
如果我使用json_extract(JSON, "key1"),我会得到以下错误:错误代码:1054。在where子句中未知列'JSON'。 - Tampa
抱歉,我的错误。感谢您的纠正,@Tampa。 - Sterls
1
@Tampa 应该使用 $.key1 而不是仅使用 key1 作为 JSON_EXTRACT() 函数的第二个参数。 - YDF
我应该如何在“OR”条件下搜索多个键(key1、key2等)中的“value1”?@Sterls - YDF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接