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] |
+----+---------------------+
如何通过给定数组的当前交集选择所有产品?
答案 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]'