Gần đây tôi đã được hỏi câu hỏi này trong một cuộc phỏng vấn. Tôi đã thử điều này trong mySQL, và có kết quả tương tự (kết quả cuối cùng). Tất cả đã cho số hàng trong bảng cụ thể đó. Bất cứ ai có thể giải thích sự khác biệt lớn giữa chúng.Sự khác biệt giữa số (0), số (1) .. và đếm (*) trong mySQL/SQL là gì?
Trả lời
Không có gì thực sự, trừ khi bạn chỉ định một trường trong một bảng hoặc một biểu thức trong parantheses thay vì giá trị không đổi hoặc *
Hãy để tôi cung cấp cho bạn một câu trả lời chi tiết. Đếm sẽ cung cấp cho bạn số bản ghi không trống của trường đã cho. Giả sử bạn có một bảng có tên A
select 1 from A
select 0 from A
select * from A
tất cả sẽ trả về cùng số lượng bản ghi, đó là số hàng trong bảng A. Tuy nhiên, đầu ra khác nhau. Nếu có 3 bản ghi trong bảng. Với X và Y là tên trường
select 1 from A will give you
1
1
1
select 0 from A will give you
0
0
0
select * from A will give you (assume two columns X and Y is in the table)
X Y
-- --
value1 value1
value2 (null)
value3 (null)
Vì vậy, cả ba truy vấn đều trả về cùng một số. Trừ khi bạn sử dụng
select count(Y) from A
vì chỉ có một giá trị null không bạn sẽ nhận được 1 như sản lượng
COUNT(*)
sẽ đếm số lượng hàng, trong khi COUNT(expression)
sẽ được tính giá trị khác null trong biểu và COUNT(column)
sẽ đếm tất cả các giá trị không null trong cột.
Vì cả 0 và 1 đều là giá trị không null, COUNT(0)=COUNT(1)
và cả hai đều tương đương với số hàng COUNT(*)
. Đó là một khái niệm khác, nhưng kết quả sẽ giống nhau.
Cảm ơn fthiella. @brhneser có một câu trả lời cho nhiều người mới bắt đầu như tôi. – Dhruv
Có bạn đúng nhưng tôi nghĩ 'count (*)' sẽ mất nhiều thời gian hơn 'count (1)', phải không? Nếu có thì sử dụng 'count (1)' sẽ tốt hơn cho cách thực hiện. :) – Yubaraj
@Yubaraj đếm (1) được sử dụng để có hiệu suất tốt hơn số (*), ít nhất là trên một số dbms, nhưng ngày nay trình tối ưu hóa có thể tính (*) tương đương với số (1) – fthiella
Hiện tại - tất cả chúng nên hoạt động giống nhau. Tuy nhiên, trong những ngày trôi qua, COUNT (1) (hoặc bất kỳ hằng số nào bạn chọn) đôi khi được đề xuất trên COUNT (*) vì mã tối ưu hóa truy vấn kém sẽ làm cho cơ sở dữ liệu truy xuất tất cả dữ liệu trường trước khi chạy số đếm . COUNT (1) do đó nhanh hơn, nhưng bây giờ nó không quan trọng.
- 1. Trong SQL, sự khác biệt giữa số (*) và số đếm ('x') là gì?
- 2. Sự khác biệt giữa "1.0f" và "1.f" là gì?
- 3. Sự khác biệt giữa srand (1) và srand (0)
- 4. Sự khác biệt giữa "Số mới (...)" và "Số (...)" trong JavaScript là gì?
- 5. Sự khác biệt giữa (char) 0 và '\ 0' là gì? trong C
- 6. Sự khác nhau giữa -0 và 0 là gì?
- 7. Sự khác biệt giữa mảng.GetLength (0) và mảng.GetUpperBound (0)
- 8. Sự khác nhau giữa [0] và [: 1] trong Go là gì?
- 9. Whats sự khác biệt giữa danh sách [-1:] [0] và danh sách [len (danh sách) -1]?
- 10. Trong Ember.js, sự khác biệt giữa [] và Ember.A ([]) là gì?
- 11. Sự khác biệt giữa tệp PCAP với số ma thuật là "0x4d3cb2a1" và "0xd4c3b2a1" là gì?
- 12. Sự khác nhau giữa 1..5, [* 1..5] và [1..5] trong Groovy là gì?
- 13. Sự khác biệt giữa hằng số macro và biến không đổi trong C là gì?
- 14. Sự khác biệt giữa Số lần nhấp và Đã nhấn trong Qt là gì?
- 15. Sự khác biệt giữa thông số -, -X và -XX trong JVM là gì?
- 16. Sự khác biệt giữa int và số nguyên trong MySQL 5.0 là gì?
- 17. Sự khác biệt giữa biến, tham số và trường trong JasperReport là gì?
- 18. Sự khác biệt giữa '&' và ',' trong Generics Java là gì?
- 19. Sự khác biệt giữa lối ra (0) và thoát (1) trong Python
- 20. sự khác nhau giữa tham số và đối số trong PowerShell là gì?
- 21. Sự khác nhau giữa 1 và '1 trong Lisp là gì?
- 22. C: Sự khác biệt giữa strchr() và chỉ số()
- 23. Sự khác biệt giữa & và && trong MATLAB là gì?
- 24. Sự khác biệt giữa execl và execv là gì?
- 25. Sự khác biệt giữa Thuộc tính Canvas và Lề số
- 26. sự khác biệt giữa/là gì nó/và/\ Ait \ Z/
- 27. Sự khác biệt giữa localname và qname là gì?
- 28. PHP -Điều gì là sự khác biệt giữa các biến toàn cầu và hằng số
- 29. Sự khác biệt giữa móc và gọi lại là gì?
- 30. Sự khác biệt giữa Array.length = 0 và Array = []?
Có giá trị 'null' trong cột. Sau đó thực hiện đếm trên cột. Xem cách tính số lượng khác nhau. Chọn '0' hoặc '1' chỉ là chọn hằng số cho mỗi hàng, không có' null' nào được tham gia. – Glenn
có thể trùng lặp của [Trong SQL, sự khác nhau giữa số (cột) và số (\ *) là gì?] (Http://stackoverflow.com/questions/59294/in-sql-whats-the-difference-between-countcolumn -and-count) – newtover