답변:
집계 결과 비교를 위해 HAVING
, not WHERE
절을 사용하십시오 .
액면가에서 쿼리 취하기 :
SELECT *
FROM db.table
HAVING COUNT(someField) > 1
이상적으로 GROUP BY
는 HAVING
절 에서 적절한 평가를 위해 정의 되어야 하지만 MySQL은 GROUP BY ...
에 대한 고유 한 제약 조건을 준비하는 중 someField
입니까? 그래야 할 것 같은데 ...
someField
값 이 포함 된 경우 전체 테이블을 반환하고 그렇지 않은 경우 빈 결과 집합을 반환합니다.
SELECT username, numb from(
Select username, count(username) as numb from customers GROUP BY username ) as my_table
WHERE numb > 3
여기 있습니다 :
SELECT Field1, COUNT(Field1)
FROM Table1
GROUP BY Field1
HAVING COUNT(Field1) > 1
ORDER BY Field1 desc
OMG Ponies가 말했듯이 having 절은 당신이 추구하는 것입니다. 그러나 요약 대신 불연속 행을 얻고 자했다면 ( "가져있는"요약이 요약을 생성 함) 단일 문으로 수행 할 수 없습니다. 이 경우 두 개의 문을 사용해야합니다.
Sql의 두 테이블 사이에 Group By에 대한 예제를 제공합니다.
Select cn.name,ct.name,count(ct.id) totalcity
from city ct left join country cn on ct.countryid = cn.id
Group By cn.name,ct.name
Having totalcity > 2
또한 "pk"가 키 필드 여야한다는 것도 언급해야합니다. 셀프 조인
SELECT t1.* FROM db.table t1
JOIN db.table t2 ON t1.someField = t2.someField AND t1.pk != t2.pk
Bill Karwin은 내가 원했던 모든 중복 기록을 제공합니다. 일부는 둘 이상을 가지고 있기 때문에 동일한 레코드를 두 번 이상 얻을 수 있습니다. 키 필드 억제로 동일한 레코드를 제거하기 위해 동일한 필드가있는 다른 테이블에 모두 썼습니다. 나는 시도했다
SELECT * FROM db.table HAVING COUNT(someField) > 1
먼저. 그것에서 반환 된 데이터는 중복 중 하나만 제공합니다. 이것이 제공하는 것의 1/2 미만이지만 원하는 것이 전부라면 개수가 좋습니다.
GROUP BY
확실히 필요 합니까 (이것은 MySQL이 아닌 표준이 아닌 한)?