안녕하세요 oracle 만 사용해보고 mysql 은 처음 사용해서 질문 하나 드립니다.
특정년도 이전 5년치 년도 목록을 뽑으려고 하는데요
oracle 에서는아래와 같이 가능 한데
SELECT 2014-(LEVEL-1) years
FROM dual
CONNECT BY LEVEL < 6
ORDER BY years
mysql 은 테이블 생성하는 방식 말고 위처럼 불가능 한가요?
connect by를 지원하지 않아서.
문제가 특정 되면 비정형적인 모습으로 풀수 있습니다.
시퀀스 256 이내일 경우 아래와 같은 예제를 활용 가능.
SELECT YEAR(NOW()) - SeqValue -1 AS years FROM ( SELECT (TWO_1.SeqValue + TWO_2.SeqValue + TWO_4.SeqValue + TWO_8.SeqValue + TWO_16.SeqValue + TWO_32.SeqValue + TWO_64.SeqValue + TWO_128.SeqValue) SeqValue FROM (SELECT 0 SeqValue UNION ALL SELECT 1 SeqValue) TWO_1 CROSS JOIN (SELECT 0 SeqValue UNION ALL SELECT 2 SeqValue) TWO_2 CROSS JOIN (SELECT 0 SeqValue UNION ALL SELECT 4 SeqValue) TWO_4 CROSS JOIN (SELECT 0 SeqValue UNION ALL SELECT 8 SeqValue) TWO_8 CROSS JOIN (SELECT 0 SeqValue UNION ALL SELECT 16 SeqValue) TWO_16 CROSS JOIN (SELECT 0 SeqValue UNION ALL SELECT 32 SeqValue) TWO_32 CROSS JOIN (SELECT 0 SeqValue UNION ALL SELECT 64 SeqValue) TWO_64 CROSS JOIN (SELECT 0 SeqValue UNION ALL SELECT 128 SeqValue) TWO_128 ) t WHERE SeqValue < 5 ORDER BY years;