2014-09-08 2 views
0

일부 통화가 응답하지 않는 데이터베이스에서 고유 한 발신자 만 선택할 수 있습니까? 예 :이 샘플 표에서는 번호 6666666 (2014-09-08 10:48:52)과 5555555 (2014-09-08 11:52:10) 만 선택하고 싶습니다. 응답하지 않는 곳이 확장 없음. 나는 테이블에서 고유 한 번호를 선택할 수 없습니다.

SELECT DISTINCT * from cdr WHERE disposition !='ANSWERED'; 

을 시도하지만이 문자열이없는 모든 처분에 'ANSWERED'반환합니다. 아무도 도와 줄 수 있습니까? 감사!! 표 샘플 : 당신은 내가 위의 결과에 가입하는 것이 좋습니다 다른 열을 필요로하는 경우 응답
http://i.stack.imgur.com/CKZsh.png

+0

'뚜렷한'한 열에 만 사용할 수 있으며'*'에는 사용할 수 없습니다. –

+4

@the_pete 정확하지 않습니다. 'DISTINCT'는 전체 WHERE 필터링 된 행 집합에 적용됩니다. –

+0

근처에 이름이 나타나는 열이 아닙니다. 별개의 것 외에 다른 것을 시도한 적이 있습니까? (실제로 원하는 것을 얻지 못할 것입니다. btw)? –

답변

1
select date, src 
from cdr 
group by date, src 
having sum(disposition = 'ANSWERED') = 0 

는 의견을. 그렇지 않으면 mysql은 그룹의 일부가 아닌 컬럼에 대해 각 그룹에서 임의의 값을 리턴한다. 즉

+0

몇 가지 사항을 변경했으며 효과가있는 것으로 보입니다. '을 선택 calldate, SRC는 CLID, DST, calldate에 의해 그룹 지휘관의 처분 는, SRC 데 합계 (처분 = 'ANSWERED') = calldate의 DESC 제한에 의해 0 순서는 100' 당신에게 내 친구를 주셔서 감사합니다! – lwb

3
SELECT * 
from cdr t1 
LEFT JOIN cdr t2 ON t1.SRC = t2.SRC 
     AND t1.Date = t2.Date 
     AND t1.Disposition <> t2.Disposition 
WHERE t1.disposition = 'NO ANSWER' 
GROUP BY t1.Date, t1.SRC 
HAVING COUNT(*) = 1; 
+0

감사! 나는 이것을 시도했지만 아무것도 반환하지 않습니다. – lwb

관련 문제