MySQL 5.7和SELECT DISTINCT JSON属性

问题描述:

我需要选择帮助。我如何获得具有独特属性的行,例如我在db中有2个json字符串。MySQL 5.7和SELECT DISTINCT JSON属性

  1. {“name”:[“name1”]};
  2. {“name”:[“name2”,“name1”]};
  3. {“name”:[“name3”,“name4”]};
  4. {“name”:[“name3”]};

如果我尝试只是SELECT DISTINCT data->"$.name",所以我得到所有2个字符串,但我需要检查每个参数,如果有一些是以前不显示它。 这可能吗?

////我想得到1和3行,cos 2和4包含我们已经有的名字(我不关心name2在我的例子name2中的等效name1)。

+0

不知道我在追随。你想获得这个样本数据的结果是什么? – Mureinik

+0

只是第一个字符串,现在我得到所有2,但如果每个字符串都是{“name”:[“name1”]}; {“name”:[“name1”};它只返回1个字符串。我需要检查每个参数在$ .name中是唯一的。 – osadchi

+0

不清楚“param”是什么意思。整个名称列是一个参数,还是JSON数组中的每个字符串都是一个参数?换句话说,如果输出是[“name1”],[“name2,”name1“]或者它应该是[”name1“],[”name2“]?或者你想要输出为字符串,而不是JSON我建议你编辑你的问题,以显示你想要的实际输出 – Bampfer

SELECT DISTINCT JSON_UNQUOTE(features->"$.name[0]") as name 
FROM data WHERE JSON_LENGTH(features->"$.name") = 1 

所以,我只是把attr名字只有1个项目的结果。而且我们可以检查独特的。这不是最好的解决方案,但我没有另一个)