Использование COUNT с WHERE в MySQL - PullRequest
1 голос
/ 13 марта 2012

Немного неприятностей. Мне нужно найти все страны, которые имеют общий язык. Мне нужно только перечислить страны, в которых язык встречается более одного раза. У меня проблемы с этим кодом.

-- group countries by a common language
SELECT country, language
FROM countryinfo
HAVING COUNT(language) > 1
GROUP BY language

Ответы [ 3 ]

1 голос
/ 13 марта 2012

Если вы группируете по language, то вам нужно посчитать countries.

SELECT country, language
FROM countryinfo
GROUP BY language
HAVING COUNT(country) > 1
1 голос
/ 13 марта 2012

Если вы хотите то, что я думаю, вы хотите, я думаю, что самый ясный подход - это использовать подзапрос;или это:

SELECT country, language
  FROM countryinfo
 WHERE language IN
        ( SELECT language
            FROM countryinfo
           GROUP BY language
          HAVING COUNT(1) > 1
        )
;

или это:

SELECT country, language
  FROM countryinfo ci1
 WHERE EXISTS
        ( SELECT 1
            FROM countryinfo ci2
           WHERE ci2.language = ci1.language
             AND ci2.country <> ci1.country
        )
;

Обратите внимание, что это дает результат, отличный от других ответов, потому что то, что я думаю, вы хотите, отличается от того, что другие респонденты думают, что вы хотите,Вам нужно будет попробовать эти запросы и выяснить, что вы имели в виду.


Отредактировано, чтобы добавить: вот альтернативная теория о том, что вы хотите:

SELECT GROUP_CONCAT(country),
       language
  FROM countryinfo
 GROUP BY language
HAVING COUNT(1) > 1
;
1 голос
/ 13 марта 2012

Это в позиционировании.Это должно работать.

-- group countries by a common language
SELECT country, language
FROM countryinfo
GROUP BY language
HAVING COUNT(language) > 1
...