Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql sql查询以计数标记的帖子_Mysql_Sql_Database - Fatal编程技术网

Mysql sql查询以计数标记的帖子

Mysql sql查询以计数标记的帖子,mysql,sql,database,Mysql,Sql,Database,我有一个新闻帖子表,其中有一列标签。 “标记”列包含像这样的分隔标记 tag1,tag2,tag3 在另一个表中,我在标记列下列出了所有标记 像这样: 标记 tag1 tag2 tag3 tag4 . . . . 我想从NewsPost表中找到用SayTag2标记的帖子数量 我该怎么做?我正在使用mysql 5.0 编辑:: 我想做的是:::查找用于标记新闻帖子的次数最多的标记 像这样: tag1 x 100 times tag2 x 1000times

我有一个
新闻帖子
表,其中有一列
标签
。 “标记”列包含像这样的分隔标记

tag1,tag2,tag3
在另一个表中,我在标记列下列出了所有标记 像这样:

标记

tag1
tag2
tag3
tag4
.
.
.
. 
我想从NewsPost表中找到用SayTag2标记的帖子数量

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

编辑::

我想做的是:::查找用于标记新闻帖子的次数最多的标记

像这样:

    tag1 x 100 times
    tag2 x 1000times
                 .
                 .
    tagN x 500 times 
tag2应该出现在结果的顶部。

这应该有效:

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

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

它应该适用于
标记表
中的所有标记:

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

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

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

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

我没有要插入此查询中的标记名(tag2)。。我想我必须加入表格???@JAVAGeek。那么你应该问另一个问题。这个问题已经得到了回答。