用于计算标记帖子的SQL查询

时间:2012-07-24 13:46:26

标签: mysql sql database

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

tag1,tag2,tag3

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

代码

tag1
tag2
tag3
tag4
.
.
.
. 

我想查找新闻发布表中标有say tag2的帖子数量。

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

编辑::

我想做的是:::找到用于标记newsPost的最多次的标签。

像这样:

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

tag2应该位于结果的顶部。

4 个答案:

答案 0 :(得分:2)

说完

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

Demo at sqlfiddle

答案 1 :(得分:1)

这应该有效:

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

答案 2 :(得分:1)

它适用于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 :(得分:1)

您可以使用正则表达式进行查询:

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

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