1

データベースからニュース項目を取得するクエリを変更しています。これらのニュース項目にはタグがあり、データベースでは、コンマで区切られた文字列として 1 つの列に格納されます。

例えば:

'content,video,featured video,foo'

私がやろうとしているのは、タグ文字列にも含まれていない限り、テーブル'video'のすべてのアイテムを取得することですが、タグ文字列に含まれるアイテムは取得しません'featured video'

これを行う最善の方法は何ですか?

これが私のクエリです:

SELECT * 
FROM posts 
WHERE status = 2 
ORDER BY postDate
4

3 に答える 3

1

おそらくそれを行う最善の方法ではありません...

Select *
FROM posts
where status = 2
AND postID NOT IN 
(SELECT postID FROM posts 
 WHERE tag LIKE '%Video%'
 AND tag NOT like '%Featured Video%')

PostId が posts テーブルの PK であると想定しています...

于 2013-06-02T20:21:03.133 に答える
1

私は恐ろしいことを提案していますが、テーブル構造に固執したい場合は、次のことを試してください。

 SELECT * FROM posts
    WHERE STATUS=2 AND
    INSTR(tags,'featured video')>0 
    OR
    INSTR(tags,'video')=0

少なくともFULLTEXTそのフィールドでインデックスを使用するので、使用するのはそれほど面倒ではありません。

于 2013-06-02T20:28:38.803 に答える