2

newsPostsそのテーブルの列がある場所のテーブルがありtagsます。tags 列にはcomma(,)、このように区切られたタグが含まれています。

tag1,tag2,tag3

別のテーブルには、次のようなタグ列の下にすべてのタグのリストがあります。

鬼ごっこ

tag1
tag2
tag3
tag4
.
.
.
. 

たとえば、tag2 でタグ付けされたニュース投稿テーブルから投稿の数を見つけたいとします。

これどうやってするの ?私は使っているmysql 5.0

編集 ::

私がやりたいことは、::: newsPost にタグを付けるために最も多く使用されているタグを見つけることです。

このような :

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

tag2 は結果の一番上に来るはずです。

4

4 に答える 4

2

言うだけ

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

sqlfiddle でのデモ

于 2012-07-24T13:51:26.107 に答える
1

これはうまくいくはずです:

SELECT * FROM newPosts WHERE tags LIKE "%tag2%"; 
于 2012-07-24T13:49:31.530 に答える
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;
于 2012-07-24T13:55:14.023 に答える
1

正規表現を使用してクエリを実行できます。

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

この式は、他のタグ内に含まれるタグがクエリ結果に含まれないようにします。たとえば、 ではアイテムを選択しますがtag2、 では選択しませんmytag22

于 2012-07-24T13:57:05.303 に答える