mysql在字段中计算逗号分隔的值



我有一个栏目叫" feedback ",还有一个栏目叫" emotion "。在这些情绪字段中,我们可以看到随机值和随机长度,如

悲伤,快乐 开心、生气、无聊无聊悲伤、快乐、无聊、大笑

您将需要一个名为'Emotions'的表,每个情绪都有它自己的主键,以及任何其他应该与每个情绪相关的信息列,以便您可以在必要时加入它们。在使用SQL时,当您将想要提供的数据组合在同一列中检索时,这是非常糟糕的。每个列、行以及行与列之间的字段应该有一个元素。我建议不要在一个单元格中使用逗号。

这是你需要的

SELECT  NAME AS emotions,COUNT(NAME) FROM (SELECT
TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(emotions.emotions, ',', numbers.n), ',', -1)) name
FROM
(SELECT 1 n UNION ALL SELECT 2
UNION ALL SELECT 3 UNION ALL SELECT 4) numbers INNER JOIN emotions
ON CHAR_LENGTH(emotions.emotions)
-CHAR_LENGTH(REPLACE(emotions.emotions, ',', ''))>=numbers.n-1
ORDER BY
ID, n) emotions
GROUP BY name

最新更新