2011-11-12 6 views
1

값 목록에 출력했습니다. 위의 목록 수가 5라고 들어날짜와 한도를 기준으로 값을 확인하십시오.

Name Date of Entry 
C1 - 1/1/2011 
C3 - 3/3/2011 
C2 - 2/2/2011  
C4 - 4/4/2011 
C5 - 5/5/2011 

, 난,이 같은 캡의 수를 가지고 그래서 어떤 'C의 이상이 비활성화 및 항목의 날짜를 기준으로합니다 비활성화하려고하는 고사한다.

즉. (시스템에 처음 입력 된) 날짜를 기반으로 오래된 C를 꺼내십시오.이 경우 C1과 C2가 활성화되어 C3, C4 & C5가 비활성화되어야합니다.

select * from table order by date; => 이것은 C1, C2, C3, C4, C5를 제공합니다.

select * from table order by date limit 2; => 이렇게하면 C1과 C2는 훌륭하지만 C3, C4, C5를 비활성화해야한다는 것을 어떻게 알 수 있습니까?

C3, C4 및 C5를 비활성화해야한다고 지정하고 싶습니다.

단일 쿼리로 수행 할 수 있습니까? 어떤 MySQL 개발자가 도와 드릴까요?

감사합니다.

+0

그냥 비활성화 할 필요하거나 테이블에 대한 갱신을 수행하려 할 행의 이름을 선택 하시겠습니까? –

+0

업데이트가 필요 없으며 사용하지 않도록 설정해야합니다. – Sharpeye500

+0

날짜가 고유한지 보장됩니까? '2011 년 1 월 1 일'의 세 가지 날짜가 있으면 어떻게해야합니까? 두 개를 무작위로 제거 하시겠습니까? –

답변

2

날짜가 고유한지 가정하면,이 시도 :

SELECT 
    name, 
    date, 
    date > 
    (
     SELECT MIN(date) 
     FROM your_table 
     WHERE date > (SELECT MIN(date) FROM your_table) 
    ) AS disabled 
FROM your_table 
ORDER BY date 
+0

오류 코드 : 1235 이 버전의 MySQL은 'LIMIT & IN/ALL/ANY/SOME 하위 쿼리'를 지원하지 않습니다. 5.2 버전을 사용하고 있습니다. 버전 #과 관련이 없습니다. 쿼리와 관련이있을 수 있습니다. 통사론. – Sharpeye500

+0

@ Sharpeye500 : 죄송합니다. 전에 테스트하지 않았습니다. 내 대답을 업데이트 해보십시오. 나는 그것을 테스트하고, 작동하는 것 같다. –

+0

이것은 아주 가깝지만 정답을주지 못합니다. 분 날짜가 2011 년 1 월 1 일이면 2011 년 1 월 1 일 2011년 2월 2일 2011-03-03 2011년 4월 4일 2011-05-05 , 난 상위 2 예를 가져올 필요 . 2011 년 1 월 1 일과 2011 년 2 월 2 일을 사용 및 사용 중지로 전환하여 3/3/2011,4/4/2011,5/5/2011을 사용 중지해야합니다. 즉. 그 테이블에있는 선택 if (현재 행의 날짜> 최소 (날짜), 1,0)를 통해 항목 1과 0에 대해 플래그를 지정하는 중. 즉. 결합하여 최소 (날짜) 및 날짜 값을 비교, 나는 구문에 대해 확실하지 논리를지고 있다고 생각합니다. – Sharpeye500

관련 문제