我在mysql表字段中有逗号分隔值,并希望在它们中获得最常见的值。
即。我的表名为A
,其中有两个字段id
和available_values
。
id available_values
--- -----------------
1 3,5,7,9
2 3,5
3 5,9
在上面的示例中,所有行都存在值5,因此我需要获取此值(平均值 - 5),因为这在每个记录中都可用。
请帮助找出解决方案。
提前致谢。
答案 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
如果值是动态的,请乘坐接收包含要搜索的数字的变量的光标,但基本选择是这样的;
我希望我帮助过你。