【问题标题】:sql query to count tagged postssql查询来计算标记的帖子
【发布时间】:2012-07-24 22:00:32
【问题描述】:

我有一张newsPosts 的表,其中我在该表中有一个tags 列。 tags 列包含comma(,) 这样的分隔标签。

tag1,tag2,tag3

在另一个表中,我在标签列下列出了所有标签 像这样:

标签

tag1
tag2
tag3
tag4
.
.
.
. 

我想从新闻帖子表中查找带有say tag2 标记的帖子数。

我该怎么做?我正在使用mysql 5.0

编辑 ::

我想要做的是 ::: 查找使用次数最多的标签来标记新闻帖子。

像这样:

    tag1 x 100 times
    tag2 x 1000times
                 .
                 .
    tagN x 500 times 

tag2 应该出现在结果的顶部。

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

    随便说

    SELECT * FROM newsPosts WHERE tags LIKE '%tag2%'
    

    Demo at sqlfiddle

    【讨论】:

    • 我没有要在此查询中插入的标签名称 (tag2).. 我想我必须加入表格??
    • @JAVAGeek 。 . .那么你应该问另一个问题。这个问题已经回答了。
    【解决方案2】:

    它应该适用于来自tags table的所有标签:

    SELECT tag, (SELECT COUNT(1) 
                 FROM tag_newPosts t2
                 WHERE t2.tag LIKE CONCAT('%',t1.tag,'%')) AS tag_count
    FROM tags t1;
    

    【讨论】:

      【解决方案3】:

      这应该有效:

      SELECT * FROM newPosts WHERE tags LIKE "%tag2%"; 
      

      【讨论】:

        【解决方案4】:

        可以用正则表达式查询:

        select *
        from newsPosts
        where tags regexp '(^|,)tag2(,|$)'
        

        此表达式可防止包含在其他标签中的标签进入查询结果。例如,它会选择带有tag2 的项目,但不会选择带有mytag22 的项目。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-02-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多