2011-06-19 14 views
2
SELECT A.id, A.title, 
FROM (`table`) as A 
WHERE A.active = '1' 
AND A.id IN (SELECT GROUP_CONCAT(B.id) from B where user = 3) 

サブクエリSELECT GROUP_CONCAT(B.id) from B where user = 3のみを起動すると、1,2,3,4が取得されます。しかし、私は全体のクエリを起動する場合、私は1つの行を取得します。私は、その値(1,2,3,4)INサブクエリのGROUP_CONCAT

SELECT A.id, A.title, 
FROM (`table`) as A 
WHERE A.active = '1' 
AND A.id IN (1,2,3,4) 

でサブクエリを代用しようとした場合、私は必要と

は、しかし、私は... 4行を取得します。

ここで私のエラー

答えて

7

MySQLは、単一のフィールド/列サブクエリのリターンを見て、そのためのようなものとして扱われます。A.id = '1,2,3,4'に沸く

... and A.id IN ('1,2,3,4') 

がクエリ「で」、GROUP_CONCATのものは必要ありません、単に実行します。

... and A.id IN (select B.id FROM b where user = 3) 
0
SELECT name 
FROM test 
WHERE salry 
IN (

SELECT GROUP_CONCAT(CONCAT('''', salry,'''')) 
FROM test group by salry 
) 

は、この連結は、まだそのはになりますsalryのように機能していない単一引用符でResultSetを追加します結果セット'1000','2000','3000','40000' ...

0

利用FIND_IN_SET()

として(table)FROM SELECT A.id、A.title、 WHERE A.active = '1' AND FIND_IN_SET(A.id、BからのSELECT GROUP_CONCAT(B.id)、ここでuser = 3))