質問
私は内側別のフィールドの値を使用しようとしている。
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をJOINWHERE auth_users.id IN(8,9)
所属していません StackOverflow