小编aer*_*ero的帖子

MySQL JSON 数组在“IN”子句中使用?

我可以使用 JSON 数组作为INMySQL(版本 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;
Run Code Online (Sandbox Code Playgroud)

mysql json mysql-5.7 mysql-json

4
推荐指数
1
解决办法
4183
查看次数

SQL GROUP BY"HAVING"所需的行

是否有一种简洁的方法HAVING来检查所需的行是否在GROUP BY

使用示例日期:

turtle_id   name  
1           Mike
2           Ralph
3           Leo
4           Don
Run Code Online (Sandbox Code Playgroud)

turtle_id   crush_for
1           Pizza
1           April Oneil
2           April Oneil
3           Pizza
3           April Oneil
4           Pizza
4           Pizza
4           Science
4           April Oneil
Run Code Online (Sandbox Code Playgroud)

和SQL:

SELECT turtle.name
FROM turtle
JOIN turtle_crush ON turtle_crush.turtle_id = turtle.turtle_id
WHERE turtle_crush.crush_for IN ('Pizza', 'April Oneil')
GROUP BY turtle.turtle_id
HAVING (a crush on both "Pizza" and "April Oneil")
Run Code Online (Sandbox Code Playgroud)

我意识到我可以做类似的事情HAVING COUNT(*) > 1,但这会给Don(id 4)带来误报,因为他喜欢'Pizza'两次.

编辑: 只要添加一个 …

mysql sql having

0
推荐指数
1
解决办法
58
查看次数

标签 统计

mysql ×2

having ×1

json ×1

mysql-5.7 ×1

mysql-json ×1

sql ×1