Количество SQL (*) и отличный

Зависит от языка, поскольку могли бы быть некоторые небольшие семантические различия, но идея состоит в том, что он будет выполняться (почти) всегда, даже если код в блоке попытки выдал исключение.

Во втором примере, если код в возвратах блока выгоды или выходах, x = 3 не будет выполняться. В первом это будет.

В платформе.NET, в некоторых случаях выполнение наконец блок не произойдет: Исключения безопасности, приостановки Потока, Компьютерное закрытие:), и т.д.

19
задан Nitish Upreti 1 December 2009 в 13:17
поделиться

8 ответов

select count(*) from (select distinct * from MyTable) as T

Хотя я настоятельно Предлагаем вам переосмыслить любые запросы, в которых используется DISTINCT . В большом проценте случаев GROUP BY более подходит (и быстрее).

EDIT: Прочитав комментарии к вопросу, я должен указать, что вы не должны никогда просят СУБД сделать больше работы, чем необходимо для получения результата. Если вы заранее знаете, что в таблице не будет повторяющихся строк, не используйте DISTINCT .

34
ответ дан 30 November 2019 в 02:56
поделиться

Вы действительно можете.

Однако, если у вас есть идентификатор, у вас не будет полностью отдельных строк. Но вы могли бы сделать, например:

SELECT COUNT(DISTINCT SenderID) FROM Messages
1
ответ дан 30 November 2019 в 02:56
поделиться

Вы можете выбрать все столбцы в таблице и сгруппировать их по ...

SELECT column1, column2, column3, count(*)
FROM someTable
GROUP BY column1, column2, column3
10
ответ дан 30 November 2019 в 02:56
поделиться

почему бы и нет?

select 
  count(distinct name)
from 
  people
4
ответ дан 30 November 2019 в 02:56
поделиться

COUNT (*) - количество строк, соответствующих запросу.

Строка содержит уникальную информацию, такую ​​как rowid. Все строки по определению различны.

Вместо этого вы должны подсчитать отдельные экземпляры значений в каком-либо поле.

0
ответ дан 30 November 2019 в 02:56
поделиться

Вы можете попробовать CTE в Sql Server 2005

;WITH cte AS (
        SELECT  DISTINCT Val1,Val2, Val3
        FROM    @Table
)
SELECT  COUNT(1)
FROM    cte

Чтобы ответить на вопрос, From документация

Указывает, что все строки должны быть подсчитано, чтобы вернуть общее количество строк в таблице. COUNT () не принимает параметры и не могут использоваться с ОТЛИЧИТЕЛЬНЫЙ. COUNT () не требует параметр выражения, потому что определение, он не использует информация о каком-либо конкретном столбец. COUNT (*) возвращает количество строк в указанной таблице без избавление от дубликатов. Это считается каждый ряд отдельно. Это включает в себя строки, содержащие нулевые значения.

0
ответ дан 30 November 2019 в 02:56
поделиться

некоторые языки могут быть не в состоянии обрабатывать «отдельный *», поэтому, если вы хотите, чтобы различие проводилось по множеству столбцов, вы можете использовать «отдельный столбецA || Столбец B ', объединяющий значения, прежде чем судить, отличаются ли они. Обратите внимание на то, являются ли ваши переменные числовыми и может ли обработчик базы данных выполнять автоматическое приведение типов к символьным строкам.

0
ответ дан 30 November 2019 в 02:56
поделиться

UberKludge и может быть специфичным для postgre, но

select count( distinct table::text ) from table
-2
ответ дан 30 November 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: