web-dev-qa-db-ja.com

MySQL:好きではない

これらのテキストはデータベースにありますが、

categories_posts
categories_news
posts_add
news_add

そして、categoriesで行を選択したくないので、次のようなクエリを使用します。

SELECT *
    FROM developer_configurations_cms

    WHERE developer_configurations_cms.cat_id = '1'
    AND developer_configurations_cms.cfg_variables LIKE '%parent_id=2%'
    AND developer_configurations_cms.cfg_name_unique NOT LIKE '%categories%'

しかし、出力でもこれら2つを返します...

categories_posts
categories_news

クエリでそれらを無視するにはどうすればよいですか?

ありがとう。

54
laukok

categories_postsおよびcategories_newsはサブストリング 'categories_'で始まり、developer_configurations_cms.cfg_name_uniqueが指定のサブストリングを含むかどうかをチェックする代わりに 'categories'で始まることをチェックするだけで十分です。これらすべてをクエリに変換します。

SELECT *
    FROM developer_configurations_cms

    WHERE developer_configurations_cms.cat_id = '1'
    AND developer_configurations_cms.cfg_variables LIKE '%parent_id=2%'
    AND developer_configurations_cms.cfg_name_unique NOT LIKE 'categories%'
78
Dalen

理由がわかりません

cfg_name_unique NOT LIKE '%categories%' 

これらの2つの値は引き続き返されますが、明示的に除外することもできます。

SELECT *
    FROM developer_configurations_cms

    WHERE developer_configurations_cms.cat_id = '1'
    AND developer_configurations_cms.cfg_variables LIKE '%parent_id=2%'
    AND developer_configurations_cms.cfg_name_unique NOT LIKE '%categories%'
    AND developer_configurations_cms.cfg_name_unique NOT IN ('categories_posts', 'categories_news')
7
Piotr Salaciak