GROUP BY 는 그런 목적으로 사용하는 것이 아닙니다. GROUP BY 절 자체의 의미를 잘못이해 하시고 사용한 것입니다. GROUP BY 는 가장 많이 이용하는 목적인 aggregate function 과 같이 이용하기 위함입니다. 김현님 방식 처럼 SELECT 에서 my_id 와 object_id 를 동시에 명시해 주고 뒤에 GOUP BY my_id 를 해 주는 경우는 당연히 에러가 발생하게 마련입니다.
차라리 distinct 절을 이용한 subselect 를 이용하는 것이 더 나을 것 같군요.
select distinct t1.a, (select distinct t2.b from t t2 where t2.a=t1.a limit 1) from t t1;
원하는 구문인지는 모르겠습니다. 아울러 random 하게 뽑는다는 것은 더더욱 SQL 구문으로 힘들 것입니다. 그냥 이런 방법도 있다는 것을 참조만 하시기 바랍니다.
-- 김현 님이 쓰신 글:
>> 아래와 같은 레코드들이 있다고 가정할때,
>>
>> TABLE NAME : list
>> ----------------------
>> my_id object_id
>> ----------------------
>> me001 you001
>> me001 you002
>> me001 you003
>> me002 you001
>> me002 you002
>> me002 you003
>>
>>
>> 내아이디를 기준으로 Group by하여
>> 내아이디별로 상대방 아이디 한 건씩(랜덤하게) 뽑아내려 합니다...
>> 뽑아내고자 하는 출력물은 다음과 같습니다..
>> ----------------------
>> my_id object_id
>> ----------------------
>> me001 you002
>> me002 you003
>>
>> 다음과 같이 쿼리하면,
>> SELECT
>> my_id, object_id
>> FROM
>> list
>> GROUP BY
>> my_id
>> 에러납니다...
>>
>> 가르쳐주세요~~~!!!
|