Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wyższy wynik zapytania ze słowem kluczowym DISTINCT?

Z technicznego punktu widzenia nie jest to odpowiedź, ale ponieważ poświęciłem trochę czasu na przeanalizowanie tego, równie dobrze mogę ją opublikować (chociaż istnieje ryzyko odrzucenia).

W żaden sposób nie mogłem odtworzyć opisanego zachowania.

Oto scenariusz:

declare @table table ([user id] int)

insert into @table values 
(1),(1),(1),(1),(1),(1),(1),(2),(2),(2),(2),(2),(2),(null),(null)

A oto kilka zapytań i ich wyników:

SELECT COUNT(User ID) FROM @table --error: this does not run
SELECT COUNT(dsitinct User ID) FROM @table --error: this does not run
SELECT COUNT([User ID]) FROM @table --result: 13 (nulls not counted)
SELECT COUNT(distinct [User ID]) FROM @table --result: 2 (nulls not counted)

I coś ciekawego:

SELECT user --result: 'dbo' in my sandbox DB
SELECT count(user) from @table --result: 15 (nulls are counted because user value
                                             is not null)
SELECT count(distinct user) from @table --result: 1 (user is the same  
                                                     value always)

To bardzo dziwne, że możesz uruchamiać zapytania dokładnie tak, jak to opisałeś. Aby uzyskać dalszą pomoc, musisz poinformować nas o strukturze tabeli i danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego SQL Server nie traktuje tego kodu w sposób błędny?

  2. Komunikat 203, poziom 16, stan 2, nie jest prawidłowym identyfikatorem

  3. Instrukcja insert exec nie może być zagnieżdżona

  4. Wyświetlanie informacji o wszystkich plikach baz danych w SQL Server

  5. Czy mogę uzyskać nazwy wszystkich tabel bazy danych SQL Server w aplikacji C#?