2017-11-21 13 views
1

IN条件に入力する文字列をから取得した1,2,3,4という文字列を使用するにはどうすればよいですか?SELECTクエリの文字列を使用してIN()条件に入れる

私はこのことから、この出力を有し、意味:

SELECT id_list 
FROM ids 
where categories = 4; 

id_list1,2,3,4のような文字列です。

は今、私はIN()内部に入れて、その文字列を使用したい:

SELECT category_name 
FROM categories 
WHERE categories IN (
    SELECT id_list 
    FROM ids 
    where categories = 4 
) 

しかし、これはこの場合、1には、文字列の最初の値の結果を出力します。

私はそれが最良の実装ではないことを知っていますが、私はDB設計をした人ではなく、このようにクエリを作成する必要があります。これはほんの一例です。

私の目標をどのように達成できるか教えていただけますか?前もって感謝します!

+0

を使用することができますCATEGORY_NAMEの構造上、あなたが取得するために期待される結果かについていくつかの情報を提供することはできますか? –

+0

コンマ区切りの値として関係を保存する悪いデザインのような臭い? –

+1

私はdbを正規化する必要があると思います。 – vaso123

答えて

2

あなたはFIND_IN_SET

クエリ

SELECT `category_name` 
FROM `categories` 
WHERE FIND_IN_SET(`id`, (SELECT `id_list` FROM `ids` WHERE `categories` = 4)) > 0; 

Find a fiddle demo here

+0

魔法のおかげで:) –

関連する問題