group by 쓰는경우 조언 0 3 1,109

by 호야별리 [MySQL] [2019.04.23 12:30:10]


20190423_122514.png (4,190Bytes)

안녕하세요.

쿼리문을 아래와같이 하나 만들었는데요.

                                    SELECT *
                                      FROM adorder
                                     WHERE ad_zip = '4183040000'
                                       AND ad_memul = '21900103'
                                       AND ad_type = 'A'
                                       AND sep = 'Y'
                                     GROUP BY ad_zip
                                     ORDER BY rand()
                                     LIMIT 5

데이터가 들어가있는 테이블에는 동일한 ad_zip, ad_memul 이 여러개 있습니다.

단, 데이터를 볼수있는 사람은 memid가 다른  5명까지만 제한을 두고있는데요.

궁금한것은 그룹바이절을 사용하지 않으면 동일한 사람이 5명이 보이고 그룹바이절을 사용하면 1명만 노출됩니다.

부적절한 그룹바이 사용같은데요

그룹바이절 사용을 제한하면서 1명만 노출되게 방법이 없을런지요...

조언좀 부탁드립니다.

 

 

by 생각 [2019.04.23 14:16:28]

SELECT *
FROM (
   SELECT *
   FROM adorder
   WHERE ad_zip = '4183040000'
   AND ad_memul = '21900103'
   AND ad_type = 'A'
  AND sep = 'Y'
ORDER BY rand()
)
WHERE ROWNUM = 1;


by 르매 [2019.04.23 15:39:10]

memid의 중복을 제거하고 싶으신거면.. memid로 그룹핑을 하셔야겠죠?

 

SELECT memid
FROM adorder
WHERE ad_zip = '4183040000'
    AND ad_memul = '21900103'
    AND ad_type = 'A'
    AND sep = 'Y'
GROUP BY memid
ORDER BY RAND()
LIMIT 5;

 


by 마농 [2019.04.23 16:06:10]

그룹바이 구문이 표준에 어긋납니다.
MySQL 에서만 허용되는 비표준 구문입니다.
그룹바이 사용법을 정확하게 알고 사용해야 합니다.
 

SELECT ad_zip, ad_memul, memid
  FROM adorder
 WHERE ad_zip   = '4183040000'
   AND ad_memul = '21900103'
   AND ad_type  = 'A'
   AND sep      = 'Y'
 GROUP BY ad_zip, ad_memul, memid
 ORDER BY rand()
 LIMIT 5
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입