通过json-column交集进行MySQL搜索

时间:2018-09-19 10:51:57

标签: mysql

MySQL 5.7.22

我有一个名为products的表,其中有一个json列shipping_method_ids 我想选择所有至少匹配一个shipping_method_id的产品,我该怎么做?

此刻,我有以下事情:

mysql> DESCRIBE products;
+----------------------+---------------+------+-----+---------+----------------+
| Field                | Type          | Null | Key | Default | Extra          |
+----------------------+---------------+------+-----+---------+----------------+
| shipping_method_ids  | json          | YES  |     | NULL    |                |
+----------------------+---------------+------+-----+---------+----------------+


SELECT * FROM products WHERE(JSON_CONTAINS products.shipping_method_ids, [1, 2, 3])

因此,我想获得所有至少匹配一个shipping_method_id的产品,但我不知道该用什么作为条件,例如

mysql> SELECT id, shipping_method_ids FROM products WHERE (...);
+----+---------------------+
| id | shipping_method_ids |
+----+---------------------+
|  1 | [1, 2, 3]           |
|  2 | [1]                 |
|  3 | [2, 3]              |
+----+---------------------+

如何通过给定数组的当前交集选择所有产品?

1 个答案:

答案 0 :(得分:1)

我认为这会起作用

SELECT * FROM products WHERE JSON_CONTAINS(shipping_method_ids,'1') OR JSON_CONTAINS(shipping_method_ids,'2') OR JSON_CONTAINS(shipping_method_ids,'3')

或者您可以使用regexp

SELECT * FROM products WHERE shipping_method_ids REGEXP '[1-3]'
相关问题