Счетчик SQL (*) и отдельный
Почему мы не можем использовать count(distinct *)
в SQL? Как и для подсчета всех различных строк?
Ответы
Ответ 1
select count(*) from (select distinct * from MyTable) as T
Хотя я настоятельно рекомендую вам пересмотреть любые запросы, которые используют DISTINCT
. В большом проценте случаев GROUP BY
более уместен (и быстрее).
РЕДАКТИРОВАТЬ: Прочитав комментарии к вопросу, я должен указать, что вы должны никогда запрашивать у СУБД больше работы, чем нужно, чтобы получить результат. Если вы заранее знаете, что в таблице не будет повторяющихся строк, не используйте DISTINCT
.
Ответ 2
Вы можете выбрать все столбцы в таблице и группе с помощью...
SELECT column1, column2, column3, count(*)
FROM someTable
GROUP BY column1, column2, column3
Ответ 3
почему бы и нет?
select
count(distinct name)
from
people
Ответ 4
Вы действительно можете.
Если у вас есть идентификатор, у вас не будет никаких отдельных строк. Но вы могли бы сделать, например:
SELECT COUNT(DISTINCT SenderID) FROM Messages
Ответ 5
Вы можете попробовать CTE в Sql Server 2005
;WITH cte AS (
SELECT DISTINCT Val1,Val2, Val3
FROM @Table
)
SELECT COUNT(1)
FROM cte
Чтобы ответить на вопрос, из документации
Указывает, что все строки должны быть подсчитывается, чтобы вернуть общее количество строки в таблице. COUNT() не принимает параметры и не могут использоваться с DISTINCT. COUNT() не требует параметр выражения, поскольку определения, он не использует информация о любых конкретных колонка. COUNT (*) возвращает количество строк в указанной таблице без избавление от дубликатов. Он считает каждая строка отдельно. Это включает строки, содержащие нулевые значения.
Ответ 6
COUNT (*) - количество строк, соответствующих запросу.
Строка содержит уникальную информацию, такую как rowid. Все строки по определению отличаются.
Вместо этого вы должны учитывать разные экземпляры значений в некотором поле.
Ответ 7
некоторые языки не могут обрабатывать "отличные *", поэтому, если вы хотите, чтобы различие было сделано через многие столбцы, вы можете использовать "отличную ColumnA || ColumnB ', объединяя значения, прежде чем судить, отличаются ли они. Помните, являются ли ваши переменные числовыми, и ваш обработчик базы данных может сделать автоматический типный вывод символьным строкам.
Ответ 8
UberKludge, и может быть postgre specific, но
select count( distinct table::text ) from table
Ответ 9
select count (Tag_no) from tab_raw_tag_value where tag_no in (select distinct tag_no from tab_raw_tag_value)