MySQL JSON 数组用于 "IN"子句?

标签 mysql json mysql-5.7 mysql-json

我可以使用 JSON 数组作为 MySQL 的 IN 子句的参数(5.7 及更高版本,因为它支持 JSON)吗?

下面是我无法完全开始工作的代码...

    DROP TABLE IF EXISTS json_table;
    CREATE TEMPORARY TABLE json_table(     
        id INT,
        data JSON
    );

    INSERT INTO json_table (id, data) VALUES (1, "[1,2,3,4,19,20]");

    SELECT jt.id, jt.data, REPLACE(REPLACE(jt.data, '[', ''), ']', ''), jt.data->"$[4]"
    FROM json_table jt;

    SELECT stuff.name
    FROM table_stuff stuff
    #JOIN json_table jt ON stuff.id IN (1,2,3,4,19,20);
    JOIN json_table jt ON stuff.id IN (REPLACE(REPLACE(jt.data, '[', ''), ']', ''));        

    DROP TABLE IF EXISTS json_table;

最佳答案

我希望 JSON 函数能够工作,而不是 IN。像这样的东西:

SELECT stuff.name
FROM table_stuff stuff JOIN
     json_table jt
     ON JSON_CONTAINS(jt.data, CONVERT(stuff.id, char)) = 1;

关于MySQL JSON 数组用于 "IN"子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39427684/

相关文章:

mysql - 如何在 mysql 存储过程中使用 case-when 语句?

mysql - 查看对 MySQL 服务器的传入查询请求

php - 通过嵌套 foreach 循环将数据从 PHP 插入到 Mysql

java - 对类进行建模以表示 JSON 数据的原因是什么?我需要这样做吗?

MYSQL 5.7.20 - 按合并列顺序左连接 - 非常奇怪的行为

mysql - 服务器更改后 where 子句中的未知列

java - 有没有适用于 Eclipse 的数据库测试 (TDD) 工具?

mysql - 设计 MySQL 表以提高 SELECT 速度

json - 分页 jsonschema/hyperschema 时保留查询参数

mysql - 如何使用查询从mysql的json数据类型中检查 "knownlanguages"键是否包含值="English"