[SQL] MySQL은 각 카테고리의 상위 5 반환
SQLMySQL은 각 카테고리의 상위 5 반환
나는 5 메뉴 항목 당 메뉴를 반환 할 수 있어야합니다. 나는이 몇 가지 스크립트를 시도했지만 운이 없었습니다. 여기에 테이블이 있습니다
menus
-------
menuid int()
profileName varchar(35)
menuitems
-----------
itemid int()
name varchar(40)
여기에 내가 지금 무엇을 가지고있다. 나는 아래의 스크립트 오류 메시지를 받고 있어요. 오류 : 하위 쿼리가 더 후 1 개 행 반환합니다.
SELECT m.profilename, name
FROM menus m
WHERE (SELECT name
from menuitems s
where m.menuid = s.menuid
limit 5)
어떤 제안이 좋은 감사합니다.
해결법
-
==============================
1.당신은이에 대한 측면 영향을 미치는 점수 변수를 사용해야합니다
당신은이에 대한 측면 영향을 미치는 점수 변수를 사용해야합니다
SELECT profilename, name FROM ( SELECT m.profilename, s.name, @r:=case when @g=m.profilename then @r+1 else 1 end r, @g:=m.profilename FROM (select @g:=null,@r:=0) n cross join menus m left join menuitems s on m.menuid = s.menuid ) X WHERE r <= 5
-
==============================
2.
SELECT TOP 5 m.profilename, s.name FROM menus m INNER JOIN menuitems s ON m.menuID = s.menuid
from https://stackoverflow.com/questions/4729406/mysql-returning-the-top-5-of-each-category by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL - COALESCE와 ISNULL의 차이? [복제] (0) | 2020.04.19 |
---|---|
[SQL] PostgreSQL의 IF 문 (0) | 2020.04.19 |
[SQL] 병합 중복 날짜 간격 (0) | 2020.04.19 |
[SQL] SQL은 다 대다 같은 유형의 관계 테이블로 만들려면 (0) | 2020.04.19 |
[SQL] JSON 열의 배열의 요소를 쿼리 (0) | 2020.04.19 |