Подсчитывает строки, возвращаемые запросом, в котором используются разные

У меня есть простой запрос в этой форме:

SELECT DISTINCT a, b, c
FROM MyTable
WHERE a = SomeConditionsEtc

и т.д...

Но мне нужно знать, сколько строк он вернет. Изначально я делал так:

SELECT COUNT(DISTINCT a)
FROM MyTable
WHERE a = SomeConditionsEtc

Но это ненадежно, если a содержит дубликаты, а другой - нет. Итак, теперь я использую вложенный запрос:

SELECT COUNT(*)
FROM (SELECT DISTINCT a, b, c
      FROM MyTable
      WHERE a = SomeConditionsEtc) AS Temp

Это правильный подход или есть лучший способ?


person Dan    schedule 07.06.2013    source источник
comment
Вы уже смотрели следующий пост SO? stackoverflow.com/questions/1471250/   -  person Sam    schedule 07.06.2013
comment
@Sam Нет, я этого еще не видел, спасибо. Думаю, тогда вложенный запрос - самое простое решение.   -  person Dan    schedule 07.06.2013


Ответы (1)


Ваш запрос прямо по делу, выполняет свою работу, и он достаточно простой, я уверен, что вы можете добавить в него ненужную ракетостроение, но он будет преувеличен imho. Помимо того, что у вас есть, вы можете использовать group by, как показано ниже, чтобы проиллюстрировать, что я имею в виду, но в основном вы будете делать то же самое, получая уникальные посетители и подсчитывая их.

SELECT COUNT(1)
FROM (SELECT a
        FROM MyTable
        WHERE a = 'a'
        GROUP BY a, b, c) Temp
person Jason    schedule 07.06.2013