这个问题在这里已经有答案了:
在mysql字段中存储csv–坏主意(2个答案)10个月前关门了。我在sql中有一个列,它是一个逗号分隔的列表(比如cats,dogs,cows),我只需要使用mysql来计算其中的猫,狗和牛的数量
id | Name 1 | dog,cat 2 | cow,cat 3 | dog,cat,cow
6kkfgxo01#
您应该首先修复数据模型。你应该有一个单独的table来存放 id/name 关系,其中每个元组将存储在单独的行上,如:
id/name
id name ---------- 1 dog 1 cat 2 cow 2 cat 3 dog 3 cat 3 cow
这将使您的查询更加简单和高效。从当前设置开始:如果值列表是固定的,则可以使用 find_in_set() 和条件聚合:
find_in_set()
select sum(find_in_set('cat', name) > 0) no_cats sum(find_in_set('cow', name) > 0) no_cows, sum(find_in_set('dog', name) > 0) no_dogs from mytable
1条答案
按热度按时间6kkfgxo01#
您应该首先修复数据模型。你应该有一个单独的table来存放
id/name
关系,其中每个元组将存储在单独的行上,如:这将使您的查询更加简单和高效。
从当前设置开始:如果值列表是固定的,则可以使用
find_in_set()
和条件聚合: