[英]Counting Number of Rows containing each string in a different column in MySql
我有以下問題:我有一個名為 FOOD 的表,其中有一列“NAME”包含食物名稱,例如“Rice”、“White Rice”、“Milk”、“Soy Milk”等。
我需要過濾掉 NAME 只包含一個單詞的行,然后計算這些單個單詞作為食物名稱的一部分出現在 NAME 列中的行數。
例如,如果 NAME 列是:“Rice”、“White Rice”、“Milk”、“Soy Milk”、“Brown Rice”,那么結果應該是 Rice - count is 3 和 Milk - count is 2。
我知道如何獲取 NAME 列中包含單個單詞的值:
SELECT NAME AS lones FROM FOOD WHERE NAME NOT LIKE '% %' GROUP BY lones
我如何從這里繼續?
謝謝
試試這個查詢。 我將food
與一個由單字食物組成的臨時表連接起來(我通過選擇沒有空格的名稱來創建)。
JOIN 條件是單個單詞 food 出現在連接的 food 表的 name 列中。
POSITION() 的工作方式類似於其他語言中的 indexOf() 函數。 如果在源字符串中找不到搜索字符串,則返回 0。
select single_word_foods.name, count(*)
from food INNER JOIN
(select distinct name from food where position(' ' in name) = 0) as single_word_foods
on POSITION(single_word_foods.name in food.name) > 0
group by single_word_foods.name;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.