作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
它正在工作,但只返回一条记录。我总共有 5 个。
Catalog.similar是json类型字段。我从返回中删除 [""] 并将其放入 WHERE IN 条件中。但我只得到一条记录。
SELECT * FROM similar_codes a WHERE a.id IN (SELECT REPLACE(SUBSTR(c.similar,2,LENGTH(c.similar)-2),'"','') FROM catalog c WHERE c.id=1)
从 WHERE IN 内的选择返回。
SELECT REPLACE(SUBSTR(c.similar,2,LENGTH(c.similar)-2),'"','') FROM catalog c WHERE c.id=1)
3380, 3382, 1952, 3384, 3383
最佳答案
与其尝试开发自己的方式来搜索 JSON,为什么不使用内置函数呢?或者,如果您使用的 MySQL 版本不支持 JSON 数据,那么您最好考虑使用链接表。
-- Create main table
CREATE TEMPORARY TABLE test (id INT(11));
INSERT INTO test (id) VALUES (3380), (3382), (1952), (3384), (3383);
-- Create JSON table
CREATE TEMPORARY TABLE test_search (id INT(11), similar JSON);
INSERT INTO test_search (id, similar) VALUES (1, JSON_ARRAY(3380, 3382, 1952, 3384, 3383));
-- Select
SELECT t.id
FROM (SELECT similar AS ids FROM test_search WHERE id = 1) ts
INNER JOIN test t ON JSON_CONTAINS(ts.ids, CAST(t.id AS json), '$');
关于MySQL JSON 数组中的Where in 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43979625/
我是一名优秀的程序员,十分优秀!