복붙노트

[SQL] 주문과 SQL 그룹으로

SQL

주문과 SQL 그룹으로

나는 태그의 테이블을 가지고 있고 목록에서 가장 높은 카운트 태그 싶어.

이 같은 샘플 데이터 외모

id (1) tag ('night')
id (2) tag ('awesome')
id (3) tag ('night')

사용

SELECT COUNT(*), `Tag` from `images-tags`
GROUP BY `Tag`

제가 완벽하게 찾고 있어요 데이터를 다시 가져옵니다. 그러나, 나는 가장 높은 태그 카운트가 먼저되도록, 그것을 구성하고 단지 나에게 처음 20 정도를 보내도록 제한하고 싶습니다.

나는이 시도 ...

SELECT COUNT(id), `Tag` from `images-tags`
GROUP BY `Tag`
ORDER BY COUNT(id) DESC
LIMIT 20

그리고는 "그룹 함수의 잘못된 사용 - 1111 ErrNr을"점점 계속

내가 도대체 ​​뭘 잘못하고있는 겁니까?

나는 MySQL은 4.1.25-데비안을 사용하고 있습니다

해결법

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

    1.MySQL의 모든 버전에서, 단순히 별명으로 SELECT 목록에서 집계 및 주문 별명 :

    MySQL의 모든 버전에서, 단순히 별명으로 SELECT 목록에서 집계 및 주문 별명 :

    SELECT COUNT(id) AS theCount, `Tag` from `images-tags`
    GROUP BY `Tag`
    ORDER BY theCount DESC
    LIMIT 20
    
  2. ==============================

    2.MySQL의 버전 5 이전하지 않았다 ORDER BY 절에 집계 함수를 할 수 있습니다.

    MySQL의 버전 5 이전하지 않았다 ORDER BY 절에 집계 함수를 할 수 있습니다.

    당신은 사용되지 않는 구문이 제한 주위에 얻을 수 있습니다 :

    SELECT COUNT(id), `Tag` from `images-tags`
    GROUP BY `Tag`
    ORDER BY 1 DESC
    LIMIT 20
    

    1, 그것은 당신이 그룹에 원하는 첫 번째 열 이후.

  3. ==============================

    3.나는 MySQL의에 대해 잘 모르지만, MS SQL, 당신은 ORDER BY 절에서 열 인덱스를 사용할 수 있습니다. 나는 함께 작동하도록 쉽게하는 경향으로 그룹 총격 사건으로 계산을 할 때 전에이 작업을 완료했습니다.

    나는 MySQL의에 대해 잘 모르지만, MS SQL, 당신은 ORDER BY 절에서 열 인덱스를 사용할 수 있습니다. 나는 함께 작동하도록 쉽게하는 경향으로 그룹 총격 사건으로 계산을 할 때 전에이 작업을 완료했습니다.

    그래서

    SELECT COUNT(id), `Tag` from `images-tags`
    GROUP BY `Tag`
    ORDER BY COUNT(id) DESC
    LIMIT 20
    

    이되다

    SELECT COUNT(id), `Tag` from `images-tags`
    GROUP BY `Tag`
    ORDER 1 DESC
    LIMIT 20
    
  4. ==============================

    4.오라클에서는이 같은 귀하의 계산을 분리하고 더 나은 약간을 주문하기 위해 잘 작동합니다. 그것은 MySQL의 4에서 작동합니다 있는지 확실하지 않습니다.

    오라클에서는이 같은 귀하의 계산을 분리하고 더 나은 약간을 주문하기 위해 잘 작동합니다. 그것은 MySQL의 4에서 작동합니다 있는지 확실하지 않습니다.

    select 'Tag', counts.cnt
    from
      (
      select count(*) as cnt, 'Tag'
      from 'images-tags'
      group by 'tag'
      ) counts
    order by counts.cnt desc
    
  5. ==============================

    5.이 구문은 전혀 사용되지되지 않으며, 그것은 SQL99에서 E121-03을합니다.

    이 구문은 전혀 사용되지되지 않으며, 그것은 SQL99에서 E121-03을합니다.

  6. ==============================

    6.이 쿼리

    이 쿼리

     SELECT  data_collector_id , count (data_collector_id ) as frequency 
        from rent_flats 
        where is_contact_person_landlord = 'True' 
        GROUP BY data_collector_id 
        ORDER BY count(data_collector_id) DESC
    
  7. from https://stackoverflow.com/questions/27983/sql-group-by-with-an-order-by by cc-by-sa and MIT license