2012-04-04 4 views
0

テーブル2のcommaseparatedカラムからすべてのマッチを選択したいと思います。カラムは次のようになります:0,1,2 OR 2,4,5 OR 1,3Mysqlは別のテーブルから一致するカラムを整えます

SELECT * from table where 1,3,5 IN(SELECT commaseparated FROM table2) WHERE .. 

しかし、エラーステートメントで使用してカンマ:、5など

私は試してみました。

私はまた、REGEXPを使用してみましたが、私の場合は、どのように私はこの1つを解決することができ1,3,5

内のすべての一致を検索する必要がありますか? :)

+0

あなたはデータベースの内容を爆発させて文字列や配列に変換して検索する必要があります。 – magicianiam

+1

あなたは '1 IN(...)と2 IN(...)と3 IN(...)'を実行する必要があります。 – binarious

+0

クエリ全体を投稿してエラーが出たら、問題を簡単に解決できます –

答えて

3

標準SQLではそうすることはできません。それは

WHERE singlevalue IN (list, of, values) 

リストとリストを比較する場合は、テーブルを改訂して適切に正規化する必要があります。書式設定されたデータをフィールドに格納すると、基本的にリレーショナルデータベースを作成する目的が無効になります。リレーションシップを形成できる形式でない場合は、データとの関係を確立できません。

これらのCSVリストがサブテーブルにある場合は、非常に単純なJOINクエリを使用して仕様を満たすことができます。

+0

+1の正規化については、 – Basti

+0

正規化します! :)ありがとう、ありがとう! – teecee

関連する問題