MySQL은 스웨덴 MySQL AB 회사에서 개발한 관계형 데이터베이스 관리 시스템으로 현재 Oracle의 제품입니다.
그럼 mysql 케이스문은 어떻게 사용하나요?
mysql 케이스문 사용법:
구조: 케이스 when… then …end
1. 판단하는 동안 값을 변경하세요.
eg:
select OperatorAccount, case when CreateTime>'2016-02-14 16:24:42' then 'after' when CreateTime<'2016-02-14 16:24:42' then 'before' else 'now' end stage from log_login order by CreateTime DESC
두 번째 작성 방법
SELECT CallerNumber, CASE IsLocal WHEN 0 THEN '外线' WHEN 1 THEN '内线' END FROM cdr
2. 한 행을 여러 열로 나눕니다.
예:
SELECT SipAccount, COUNT(1) AS number,IsCheck FROM cdr GROUP BY SipAccount,IsCheck
이 통계 결과를 분할합니다(0은 점수가 없음, 1은 우수함, 2는 자격 있음, 3은 자격 없음)
최종 결과는 다음과 같습니다.
그래서 결국 행을 세 개의 열로 분할해야 합니다. 명령문은 다음과 같습니다
SELECT SipAccount, (CASE IsCheck WHEN 1 THEN number END) youxiu, (CASE IsCheck WHEN 2 THEN number END) hege, (CASE IsCheck WHEN 3 THEN number END) buhege FROM (SELECT SipAccount, COUNT(1) AS number,IsCheck FROM cdr GROUP BY SipAccount,IsCheck) AS a
이제 결과는 세 개의 열로 분할되었지만 최종 결과는 다음과 같습니다. 다음으로 sipaccount에 따라 그룹화하고 동시에 결과를 처리해야 합니다. 성명서는 다음과 같습니다:
SELECT sipaccount, IF(MAX(youxiu) IS NULL,0, MAX(youxiu)) youxiu, IF(MAX(hege) IS NULL,0, MAX(hege)) hege, IF(MAX(buhege) IS NULL,0, MAX(buhege)) buhege FROM (SELECT SipAccount, (CASE IsCheck WHEN 1 THEN number END) youxiu, (CASE IsCheck WHEN 2 THEN number END) hege, (CASE IsCheck WHEN 3 THEN number END) buhege FROM (SELECT SipAccount, COUNT(1) AS number,IsCheck FROM cdr GROUP BY SipAccount,IsCheck) AS a) AS b GROUP BY sipaccount
드디어 이런 결과가 나왔습니다. 정확히 우리에게 필요한 형식입니다.
위 내용은 mysql 케이스문을 어떻게 사용하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!