0

重複の可能性:
カンマ区切りのリストでのMysqlWHEREの問題

私はテーブルに次の情報を持っています

name     categories
------   -----------
John      1,4
Jim       4,1
JAck      4,1

他の間。

カテゴリ4に関連するすべての行を選択したいのですが、このステートメントです。

SELECT name, categories
FROM `mytable`
WHERE 4 IN (categories)

「Jim」と「Jack」のみを返し、「John」は返しません。私は何が間違っているのですか?

編集:残念ながら、テーブルの構造を変更できません。そのコンマリストスタイルを使用する必要があります

4

1 に答える 1

0

カンマ区切りのリストを1つの列に保存している理由がわかりません。ただし、テーブル構造を変更できない場合はLIKE、データの比較に使用する必要があります。

select name, categories
from yourtable
where categories like '%4%'

SQL FiddlewithDemoを参照してください

FIND_IN_SETまたは、次の関数を使用できます。

select name, categories
from yourtable
where FIND_IN_SET(4,categories) > 0

SQL FiddlewithDemoを参照してください

私の提案は、データをこのコンマ区切り形式で保存しないようにテーブルを変更することです。これは問題を引き起こすだけです。

于 2012-11-28T15:05:40.020 に答える