복붙노트

[SQL] 하나 개의 필드의 개수가 1보다 클 경우 선택

SQL

하나 개의 필드의 개수가 1보다 클 경우 선택

나는 이런 일을하고 싶지 :

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

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

해결법

  1. ==============================

    1.사용을 HAVING하지 WHERE 절 집계 결과 비교.

    사용을 HAVING하지 WHERE 절 집계 결과 비교.

    액면 쿼리를 촬영 :

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

    이상적으로,이 HAVING 절에서 적절한 가치 평가에 대해 정의하여 그룹해야하지만, MySQL은 GROUP BY에서 숨겨진 열을 허용 않습니다 ...

    이 someField에 고유 제한 조건에 대한 준비인가? 그것처럼 보인다는해야 ...

  2. ==============================

    2.

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

    3.당신은 또한이 작업을 수행 할 수 있습니다 자체 조인 :

    당신은 또한이 작업을 수행 할 수 있습니다 자체 조인 :

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

    4.여기 가서 :

    여기 가서 :

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

    5.일방 통행

    일방 통행

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

    6.OMG 조랑말이 언급 한 바와 같이, HAVING 절은 후 무엇이다. 당신이 대신 요약의 개별 행을 얻을 것이라고 기대했다 그러나합니다 (이 "필요"에 대한 요약을 생성) - 그것은 하나의 명령문에서 수행 할 수 없습니다. 당신은이 경우에 두 개의 문을 사용해야합니다.

    OMG 조랑말이 언급 한 바와 같이, HAVING 절은 후 무엇이다. 당신이 대신 요약의 개별 행을 얻을 것이라고 기대했다 그러나합니다 (이 "필요"에 대한 요약을 생성) - 그것은 하나의 명령문에서 수행 할 수 없습니다. 당신은이 경우에 두 개의 문을 사용해야합니다.

  7. ==============================

    7.나는 SQL에서 두 테이블 사이의 그룹에 의해 예를 들어 위로를 줄 :

    나는 SQL에서 두 테이블 사이의 그룹에 의해 예를 들어 위로를 줄 :

    선택 cn.name, ct.name, 수 (ct.id) totalcity 도시 CT에서 ct.countryid = cn.id에 국가 CN 가입 왼쪽 그룹으로 cn.name, ct.name 데 totalcity> 2

  8. ==============================

    8.나를 위해, 단지 반환 빈 결과에 의한기를 갖는 것은 아닙니다. 내가 가진 문에 의한기를 갖는 같아요 그래서 꽤 중요하다

    나를 위해, 단지 반환 빈 결과에 의한기를 갖는 것은 아닙니다. 내가 가진 문에 의한기를 갖는 같아요 그래서 꽤 중요하다

  9. ==============================

    9.또한 "PK"는 키 필드해야한다고 언급한다. 자기는 조인

    또한 "PK"는 키 필드해야한다고 언급한다. 자기는 조인

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

    빌 Karwin에 의해 당신에게 내가 원하는 무엇인가하는 중복 모든 레코드를 제공합니다. 일부는 더이보다 가지고 있기 때문에, 당신은 두 번 이상 같은 기록을 얻을 수 있습니다. 나는 키 필드 억제하여 동일한 기록을 없애 같은 필드를 다른 테이블에 모두를 썼다. 나는 시도

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

    상기 제. 그것에서 반환 된 데이터는 중복의 한 줄, 더 적은이 당신을 제공하지만, 당신이 원하는 모든 경우 카운트가 선한 일의 1/2 이상.

  10. from https://stackoverflow.com/questions/3710483/select-where-count-of-one-field-is-greater-than-one by cc-by-sa and MIT license