我有逗号分隔列,需要从mysql中获取最常见的值

时间:2016-07-28 10:49:35

标签: php mysql

我在mysql表字段中有逗号分隔值,并希望在它们中获得最常见的值。

即。我的表名为A,其中有两个字段idavailable_values

 id    available_values
 ---   -----------------
 1     3,5,7,9
 2     3,5
 3     5,9

在上面的示例中,所有行都存在值5,因此我需要获取此值(平均值 - 5),因为这在每个记录中都可用。

请帮助找出解决方案。

提前致谢。

3 个答案:

答案 0 :(得分:-1)

最好的方法是包含另一个表,每个id和您的值一行。但您可以使用REGEXP来实现输出:

SELECT * FROM table_name WHERE
available_values REGEXP CONCAT('(^|,)(', replace(5,',','|'),')(,|$)')

答案 1 :(得分:-1)

SELECT * FROM `test` WHERE FIND_IN_SET($keysValue,available_values)

示例

SELECT * FROM `tableName` WHERE FIND_IN_SET($keysValue,columnsName)

答案 2 :(得分:-1)

在这里查看示例,也许可以帮助您:

pizza_table架构

id |披萨名称| pizza_topping_ids

1 | pizza1 | 1,2,3
2 | pizza2 | 2,3
3 | pizza3 | 4,5,6

示例:

SELECT * FROM `pizza_table` WHERE FIND_IN_SET(2,pizza_topping_ids)

OR REGEXP:

SELECT * FROM `pizza_table` WHERE pizza_topping_ids REGEXP '^2,|,2$|,2,' OR pizza_topping_ids =2

在你的情况下,试试这个:

SELECT * FROM `table_name` WHERE FIND_IN_SET(5,available_values)

OR REGEXP:

 SELECT * FROM `table_name` WHERE available_values REGEXP '^5,|,5$|,5,' OR available_values =5

如果值是动态的,请乘坐接收包含要搜索的数字的变量的光标,但基本选择是这样的;

我希望我帮助过你。