使用json和mysql查找相似的行

bxgwgixi  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(301)

我有一个mysql表,名为 products . 该表中有一列名为 categories .
categories列是对应于每个产品关联的不同类别的json id。
这里有几个例子:

  1. [16,49]
  2. [81,112,182]
  3. []
  4. [22,342]
  5. [38]

我正在寻找一个查询,可以运行找到类似的产品的基础上类别。
对我正在尝试执行的操作的伪查询:

  1. SELECT FROM products WHERE categories ARE SIMILAR TO CATEGORIES IN id = '1000'

我在想是否有办法计算匹配的数量,并根据每一行的匹配数量进行排序。或者类似的东西?

tvokkenx

tvokkenx1#

使用 json_contains 匹配json数组的每个元素。必须将值作为数组传递。

  1. mysql> select * from products where json_contains(categories, '[182]');
  2. +----------------+
  3. | categories |
  4. +----------------+
  5. | [81, 112, 182] |
  6. +----------------+

外键不是json的好用途。它们将执行较慢,并且无法保持引用完整性。相反,使用传统的联接表。

相关问题