質問

私は内側別のフィールドの値を使用しようとしている。

SELECT types.id, title, auth_users.types
FROM types
LEFT JOIN auth_users ON auth_users.id IN (8,9)
WHERE types.id IN (1,2,3)
GROUP BY types.id

作品

SELECT types.id, title, auth_users.types
FROM types
LEFT JOIN auth_users ON auth_users.id IN (8,9)
WHERE types.id IN (auth_users.types)
GROUP BY types.id

は動作しません。

http://pastebin.com/m76ae0596 の詳細情報はここで見つけることができます。

auth_users.types = 1,2,3
役に立ちましたか?

解決

あなたはFIND_IN_SETを使用する必要がある - この質問を参照してください。 MySQLを:IN演算子使用してSELECT文を

他のヒント

残念ながら、IN (...)はあなたが照合する値を抽出するためにvarchar型フィールドの値を解析しようとしません。

これは、基本的には "types.id" が "1、2、3"(すなわちない1、2又は3、実際の単一の値 "1、2、3")

これを解決する1つの方法は、結果セットを返し、その中でvarchar型の値をとり、それを解析して、あなたの例のための3行を返すデータベースの機能を持っているだろう。

それ以外に、あなたは(恐ろしく実行します)LIKEを使用するように書き換えることのいずれかの必要がある、またはあなたがそれらの値を自分で解析し、直接SQLに結果を配置する必要があります。

行サブクエリを試してください:

 SELECT column1,column2,column3
   FROM t1
   WHERE (column1,column2,column3) IN
         (SELECT column1,column2,column3 FROM t2);

EDITます:

実際には、あなたのペーストビンを見て、あなたはvarchar型として一列に「1,2,3」を格納していますか?それは仕事に行くのではありません。

私は、彼が参加する簡単な探していると思います。

LEFT types.id = auth_users.types

ON auth_usersをJOIN

WHERE auth_users.id IN(8,9)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top