2014-09-25 3 views
1

두 개의 mysql 테이블이 있는데 다른 테이블에서 2보다 큰 수의 ID를 선택하고 싶습니다. 여기 Mysql - 다른 테이블에서 선택하십시오. 피연산자에 1 열의 오류가 있어야합니다.

내 쿼리입니다 :

SELECT * FROM `firsttable` where from_user_id in (SELECT target,count(*) as c FROM `second table`where type='follower' group by target having c>2) 

그러나 나는 또한, 쿼리에서 z는 (선택 어디 XY에서 선택 할 때마다 나이를 취할 것 (1 열을 포함해야 피연산자로 (들) 오류를 실행 ...) 쿼리).

+1

. 'SELECT' 절에 넣는 대신'HAVING count (*)> 2'를 사용할 수 있습니다. – bernie

+1

느림과 관련하여 조인에서 두 번째 테이블을 대신 사용해보십시오. – bernie

+0

감사합니다.이 인스턴스에서 조인 쿼리는 어떻게 작동합니까? – d12n

답변

2

in 연산자는 단일 열 쿼리에서만 사용할 수 있습니다. 다행히, 당신은 당신의 having 절에 그것을 가지고 순서대로 선택 목록에서 count이 필요가 없습니다 :`IN` 피연산자의 오른쪽에 서브 쿼리는 하나의 열을 반환해야합니다

SELECT * 
FROM `firsttable` 
WHERE from_user_id IN (SELECT target 
         FROM  `second table` 
         WHERE type =' follower' 
         GROUP BY target 
         HAVING COUNT(*) > 2) 
관련 문제