sql 쿼리 관련 질문 드립니다.
본문
며칠째 찾아보고 있는데요. 이렇게 저렇게 해봐도 해결이 안되서요
안되겠다 싶어 질문 남깁니다.
고수님들의 고언 부탁드립니다.
families 라는 테이블에 firstname, name, birth 라는 컬럼이 있습니다.
안에 만여명의 데이터가 있는데요. 누구는 김씨 성을 쓰고, 누구는 이씨 박씨를 쓰는데요.
김씨, 김삼순, 19801001
김씨, 김화동, 19920202
박씨, 박화자, 19781005
박씨, 박화순, 19981005
강씨
최씨
.
.
데이터는 이런식으로 1000개 정도 있다 가정하겠습니다.
그룹별로 가장 최근에 태어난 사람 이름, 또는 가장 늦게 태어난 사람 이름을 구하는건데요.
각성씨별 가장 최근에 태어난 사람을 구한다 가정했을 때
이런 결과를 예상하고..
김씨, 김화동, 19920202
박씨, 박화순, 19981005
ㄴ 쿼리는 이런식으로 작성했습니다. select * from families group by `firstname` order by `birth`
위처럼 두사람의 이름이 나와야 하는데 마구잡이로 섞여서 나오네요.
지금까지 테스는 아래같이 해봤습니다.
1. select * from families group by `firstname` order by `birth`
2. select * from (select * from families order by `birth`)a group by a.`firstname`
이 방법 말고도 birth 값에 index 를 주고 acs 로 정렬이 되게도 해봤는데요.
결과는 달라지지 않았습니다.
고수님들의 고언 부탁드립니다^^
답변 3
SELECT * FROM (SELECT * FROM families ORDER BY birth DESC) AS test GROUP BY firstname
select * from families group by `firstname` order by `birth`, `name`
답변 감사합니다.
답변 해주신 대로는 이미 해본적이 있네요. 그래도 감사합니다.
지금은 mysql 버젼의 문제일까 라는 생각라 생각하고 버젼 변경을 염두하고 있습니다.