我有一张mysql表
id | vegetable
---+---------------------------------
1 | Capsicum
2 | Capsicum, Capsicum (yellow)
3 | Tomato, Capsicum (red)
4 | Capsicum
5 | Capsicum, Potato, Capsicum (red)
我想知道所有蔬菜种类的数量;辣椒必须与辣椒(红色)或辣椒(黄色)分开计数。我期待这样的结果:
Capsicum : 4
Capsicum (red): 2
Capsicum (yellow) : 1
Tomato : 1
Potato : 1
单个蔬菜从带有foreach循环的数组运行。如果我运行以下mysql代码:
$sql = "SELECT COUNT(vegetable) AS tot FROM mytable WHERE vegetable like '%" . $veg . "%'";
结果如下:
Capsicum : 7 // instead of 4
Capsicum (yellow) : 1
Capsicum (red) : 2
Tomato : 1
Potato : 1
这个问题的解决方法是什么?
3条答案
按热度按时间vi4fp9gy1#
如果要计算包含单词“capsicum”的行数,则应使用count(id)。
如果你的目的是计算这个词(“capsicum”)在所有行中重复了多少次,那么我建议你按以下方式替换它:
长度(蔬菜)。。。这将给你整个列的长度,假设它是20长度(替换(蔬菜,'辣椒','')。。。如果去掉“capsicum”这个词的长度是4,那么这将给出它的长度
差别是20-4=16这意味着“辣椒”一词出现了两次
为了知道这个词被重复了多少次,让我们把结果(16)除以单词“capsicum”的长度16/8=2次
现在,让我们把所有的事件加起来
nbnkbykc2#
它确实像预期的那样工作,因为它发现了7条记录。你的列很可能是可枚举的?
我的建议是规范化数据库sceham(1个带蔬菜的表)、1个带可能颜色的表和1个结合蔬菜和颜色的表(因为我看到你在评论中写颜色),并查询我写的最后一个表。
你也可以试试
"group by (vegetable)"
对你的问题,它应该给你一个大概的结果,你所寻求的,但我不完全确定。prdp8dxp3#
可能是不同的关键字可以工作。