Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Kết quả truy vấn cao hơn với Từ khóa DISTINCT?

Về mặt kỹ thuật, đây không phải là một câu trả lời, nhưng vì tôi đã dành thời gian để phân tích điều này, nên tôi cũng có thể đăng nó (mặc dù tôi có nguy cơ bị bỏ phiếu thấp).

Không có cách nào tôi có thể tái tạo hành vi được mô tả.

Đây là tình huống:

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)

Và đây là một số truy vấn và kết quả của chúng:

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)

Và điều gì đó thú vị:

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)

Tôi thấy rất kỳ lạ khi bạn có thể chạy các truy vấn chính xác như cách bạn đã mô tả. Bạn phải cho chúng tôi biết cấu trúc bảng và dữ liệu để được trợ giúp thêm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hành vi ROW_NUMBER của Máy chủ SQL

  2. Entity Framework Core 2.0:Cách định cấu hình lớp cơ sở trừu tượng một lần

  3. SQL Server UNION - ORDER BY Behavior mặc định là gì

  4. Người dùng đã đăng nhập sẽ bị đăng xuất sau một thời gian

  5. SHA256 trong thủ tục lưu trữ T-sql