2017-10-05 17 views
0

조건이 충족 될 때 테이블의 특정 행을 계산하려고합니다. 아래는 무엇을 하려는지 보여주는 예입니다.내부 조건이있는 SELECT 개수

SELECT (CASE 
     WHEN COUNT(*)<9 WHERE (tb1.col IS NULL OR tb1.col=1) THEN 1 
     WHEN COUNT(*)<9 WHERE tb1.col=2 THEN 2 
     WHEN COUNT(*)<9 WHERE tb1.col=3 THEN 3 
     WHEN COUNT(*)<9 WHERE tb1.col=4 THEN 4 
     WHEN COUNT(*)<9 WHERE tb1.col=5 THEN 5 
     WHEN COUNT(*)<9 WHERE tb1.col=6 THEN 6 
    END) 
WHERE tb1.id=X 

내가 아는이 아니 정확히처럼 작동하지만 12 이상을 확인해야하기 때문에 내가 궁금 할 때 .. THEN, 그것을 할 다른 방법이 있다면. 기본적으로 조건을 충족하는 행을 계산하고 9 미만인지 확인하려고합니다. 17 번 더 반복하십시오.

답변

1

데이터를 tb1.col 단위로 그룹화하고 각 그룹의 수를 계산하십시오. 그런 다음

SELECT MIN(col) AS val 
FROM (
    SELECT IFNULL(tb1.col, 1) AS col, COUNT(*) AS count 
    FROM yourTable AS tb1 
    WHERE tb1.id = X 
    GROUP BY col 
) x 
WHERE count < 9 
+0

미만 9. 그것을 할 수있는 좋은 방법처럼 보이지만 내가 가진 그것을 실행 한 후, _Every 파생 테이블 내가 당신이 검색 희망을 자신의 alias._ –

+1

이 있어야이 첫 번째 값을 찾을 수 오류 메시지가 나타나고 해결책을 찾은 후에 대답을 편집하여 표시했습니다. – Barmar

+0

하하, 내가 알지 못했지만, 당신이 정말 좋은 사람이되어야한다고 생각했다. 전혀 상관이 없다는 것을 안다. 나는 그것에 대해 생각하게 만들었다 : p –