내가 실행할 때
select *, count(*) c
FROM mytable
GROUP BY col3, col4
HAVING c > 1
order by col4, col3;
모든 값에 대해 선택 항목 중 적어도 두 개 (col3, col4)가있는 행을 가져올 것으로 예상했습니다. 그러나 일부 col3 값으로 하나의 행만 발생하는 결과를 얻습니다. 아무도 이유를 설명해 주시겠습니까?
즉, 쌍 (col3, col4)이 두 번 이상 발생하는 위치에 대한 모든 행을 가져 오는 쿼리를 작성하려고합니다.
예상치 못한 결과 의 예 는 다음과 같습니다.
id - col1 - col2 - col3 - col4 - c
123- val1 val123 43 val444 2
456- val14 val52 45 val444 2
열 col3의 43은 결과에 나타나지 않지만 예상합니다. 그렇지 않으면이 행이 결과에 없어야합니다.
옳은,
select * from ukberu1m where col3=43 and col4=val444;
원래 테이블에 두 개의 결과를 제공하지만 결과 테이블에서는 원하는 기준에 따라 하나의 행만 표시되고 어떤 이유로 든 두 개가 표시되지 않습니다.
각각의 인스턴스가 하나뿐 아니라 중복 된 모든 행을 보려면 쿼리를 원래 테이블과 조인해야합니다.
SELECT t1.*
FROM mytable AS t1
JOIN (SELECT col3, col4
FROM mytable
GROUP BY col3, col4
HAVING COUNT(*) > 1) AS t2
ON t1.col3 = t2.col3 AND t1.col4 = t2.col4
ORDER BY col4, col3
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다