[sql] 한 필드의 개수가 1보다 큰 경우 선택

다음과 같이하고 싶습니다.

SELECT *
  FROM db.table
 WHERE COUNT(someField) > 1

MySql에서 어떻게 이것을 달성 할 수 있습니까?



답변

집계 결과 비교를 위해 HAVING, not WHERE절을 사용하십시오 .

액면가에서 쿼리 취하기 :

SELECT *
  FROM db.table
HAVING COUNT(someField) > 1

이상적으로 GROUP BYHAVING절 에서 적절한 평가를 위해 정의 되어야 하지만 MySQL은 GROUP BY

에 대한 고유 한 제약 조건을 준비하는 중 someField입니까? 그래야 할 것 같은데 …


답변

SELECT username, numb from(
Select username, count(username) as numb from customers GROUP BY username ) as my_table
WHERE numb > 3


답변

셀프 조인으로도이 작업을 수행 할 수 있습니다.

SELECT t1.* FROM db.table t1
JOIN db.table t2 ON t1.someField = t2.someField AND t1.pk != t2.pk


답변

여기 있습니다 :

SELECT Field1, COUNT(Field1)
  FROM Table1
 GROUP BY Field1
HAVING COUNT(Field1) > 1
ORDER BY Field1 desc


답변

일방 통행

SELECT t1.*
FROM db.table t1
WHERE exists
      (SELECT *
      FROM db.table t2
      where t1.pk != t2.pk
      and t1.someField = t2.someField)


답변

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