예를들어...
어떤 필드에 값이
승
무
패
이렇게 있다고 하면 최근 3개가 '승'이 연속 3개가 나오는데
이걸 쿼리를 통해서 알아낼 수 있을까요?? 그러니까 가장 마지막 값을 통해서 그 값이 몇번이나 연속되어 있는지를요...
[승 - 3]
이렇게요....
이게 가능할까요?^^;;
음... limit 안쓰고... no가 PK (숫자일 경우)
select no, type from TABLE
where no>
(
select max(B.no)
from
select no,type from TABLE order by no desc
) as A
inner join
select no+1 as c, no,type from TABLE where no not in (select max(no) from TABLE) order by no desc
) as B
on A.no=B.c
where A.type!=B.type
)
그냥 다 풀로 검색하네요..;;
limit 안쓰고 좀더 편하게 하는방법은 어떻게 하나요? ㅡㅜ
어떤 필드가 N 일 경우, SELECT n, IF( @prev = n, @k:= @k + 1, @k:= 1) AS k, @prev := n FROM dual; 이를 통해 아래와 같은 결과가 나옵니다. +------+------+------------+ | n | k | @prev := n | +------+------+------------+ | 1 | 1 | 1 | | 2 | 1 | 2 | | 1 | 1 | 1 | | 1 | 2 | 1 | | 1 | 3 | 1 | | 3 | 1 | 3 | | 2 | 1 | 2 | | 2 | 2 | 2 | +------+------+------------+ 아래 쿼리라면 원하시는 결과가 나오지 않을까 싶습니다. SELECT n, k FROM ( SELECT n, IF( @prev = n, @k:= @k + 1, @k:= 1) AS k, @prev := n FROM dual ) x WHERE k >= 3; +------+------+ | n | k | +------+------+ | 1 | 3 | +------+------+
답변들 감사합니다..