我可以使用 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) 是否有一种简洁的方法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'两次.
编辑: 只要添加一个 …