我建议在消息和标签之间使用典型的多对多关系。
那意味着您需要3张桌子。
这样,您不必多次存储标签,而仅创建与消息的新关系(当然,如果该标签已存在于标签表中)。
这样你可以
SELECT COUNT(*) FROM Tags INNER JOIN TagMessageRelations ON Tags.Id = TagMessageRelations.TagId INNER JOIN Messages ON TagMessageRelations.MessageId = Messages.Id GROUP BY Messages.UserId