MYSQL - 在 WHERE IN 子句中使用数组
MYSQL - using array in WHERE IN clause
在 table 中有一个 json 数组列,例如[“A1”、“A2”、“B1”]。我想在 WHERE IN 子句中引用该数组。我无法将 json 数组计算为 ... WHERE tbl2.refID IN ("A1", "A2", "B1").
SET @ref = replace(replace('["A1", "A2", "BI"]','[', ''), ']', ''); SELECT @ref;
returns “A1”、“A2”、“B1”,如我所愿,但无法在 ... WHERE tbl2.refID IN (@ref)
中工作
那么我如何计算要用作“WHERE IN”值的数组?
Table 1
id
array of ids
other cols
1
["A1", "A2", "B1"]
Table 2
id
refID
col 3
1
A1
[ ]
2
A2
[ ]
使用 table1.col2 的元素我想 select 和 table2.
中的 col3 分组
希望我能更好地说明它!
我已尝试评估传递给 WHERE IN () 但未返回任何值的数组列。
评价莫名其妙就坏了。
WHERE tbl2.refID IN (replace(replace('["A1", "A2", "B1"]','[', ''), ']', ''));
未评估
如果该值存在 JSON_CONTAINS
,您可以在 JSON 中搜索
注意,JSON_CONTAINS
需要两个参数的有效 JSON,因此 JSON_CONTAINS('["A1"]', 'A1')
我们无效,因为 A1
不是有效的 JSON 字符串表示。
对于where,你可以简单地做
WHERE JSON_CONTAINS('["A1", "A2", "BI"]', JSON_QUOTE(tbl2.refID))
它将在字符串周围添加引号并针对您的数组进行测试。
在 table 中有一个 json 数组列,例如[“A1”、“A2”、“B1”]。我想在 WHERE IN 子句中引用该数组。我无法将 json 数组计算为 ... WHERE tbl2.refID IN ("A1", "A2", "B1").
SET @ref = replace(replace('["A1", "A2", "BI"]','[', ''), ']', ''); SELECT @ref;
returns “A1”、“A2”、“B1”,如我所愿,但无法在 ... WHERE tbl2.refID IN (@ref)
那么我如何计算要用作“WHERE IN”值的数组?
Table 1
id | array of ids | other cols |
---|---|---|
1 | ["A1", "A2", "B1"] |
Table 2
id | refID | col 3 |
---|---|---|
1 | A1 | [ ] |
2 | A2 | [ ] |
使用 table1.col2 的元素我想 select 和 table2.
中的 col3 分组希望我能更好地说明它!
我已尝试评估传递给 WHERE IN () 但未返回任何值的数组列。 评价莫名其妙就坏了。
WHERE tbl2.refID IN (replace(replace('["A1", "A2", "B1"]','[', ''), ']', ''));
未评估
如果该值存在 JSON_CONTAINS
注意,JSON_CONTAINS
需要两个参数的有效 JSON,因此 JSON_CONTAINS('["A1"]', 'A1')
我们无效,因为 A1
不是有效的 JSON 字符串表示。
对于where,你可以简单地做
WHERE JSON_CONTAINS('["A1", "A2", "BI"]', JSON_QUOTE(tbl2.refID))
它将在字符串周围添加引号并针对您的数组进行测试。