简体   繁体   English

MySQL-如果列值包含某些内容,则对行计数

[英]MySQL - count rows if column value contains something

today I hit a stag when I realize that I need to count tags in database. 今天,当我意识到需要对数据库中的标签进行计数时,我遇到了麻烦。 I have table with tags column like 我有带有标签列的表格

tags_column
tag1
tag1,tag2

tag1,somethingElse1
somethingElse1, somethingElse2
tag2
tag3,tag1

tag2

And I need to count how many rows contains eg tag1, tag2 and tag3 and how many rows ar without these tags. 我需要计算有多少行包含例如tag1,tag2和tag3,以及有多少行没有这些标签。 So I need something like 所以我需要像

$qry = "SELECT COUNT(tags_Column) AS `tag1Count` WHERE `tags_Column` CONTAINS 'tag1', 
        (SELECT COUNT(tags_Column) FROM `TableContainsTags`) AS `tag2Count` WHERE `tags_Column` CONTAINS 'tag2',
        (SELECT COUNT(tags_Column) FROM `TableContainsTags`) AS `tag3Count` WHERE `tags_Column` CONTAINS 'tag3',
        (SELECT COUNT(tags_Column) FROM `TableContainsTags`) AS `notagCount` WHERE `tags_Column` DOESN'T_CONTAINS 'tag1' OR 'tag2' OR 'tag3'
        FROM `TableContainsTags`";

Do you have any idea, please? 你有什么主意吗?

Try: 尝试:

SELECT sum( case when `tags_Column` CONTAINS 'tag2' then 1 else 0 end ) as tag2,
       sum( case when `tags_Column` CONTAINS 'tag3' then 1 else 0 end ) as tag3,
       .....
       sum( case when `tags_Column` CONTAINS 'tag256' then 1 else 0 end ) as tag256,
       sum( case when `tags_Column` CONTAINS `tag2` OR 
                      `tags_Column` CONTAINS 'tag3`
            then 0 else 1 end ) as doesnt_contains_tags_2_3
FROM `TableContainsTags`

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM