Thông thường tất cả Selects có dạng SELECT [columns, scalar computations on columns, grouped computations on columns, or scalar computations] FROM [table or joins of tables, etc]
Bởi vì điều này cho phép tính toán vô hướng đơn giản chúng ta có thể làm điều gì đó như SELECT 1 + 1 FROM SomeTable
và nó sẽ trả về một recordset với giá trị 2 cho mỗi hàng trong bảng SomeTable
.
Bây giờ, nếu chúng tôi không quan tâm đến bất kỳ bảng nào, nhưng chỉ muốn thực hiện phép tính vô hướng của chúng tôi, chúng tôi có thể muốn làm điều gì đó như SELECT 1 + 1
. Điều này không được phép theo tiêu chuẩn, nhưng nó rất hữu ích và hầu hết các cơ sở dữ liệu cho phép nó (Oracle không trừ khi nó được thay đổi gần đây, ít nhất là nó được sử dụng để không).
Do đó, các lệnh SELECT trần như vậy được xử lý như thể chúng có mệnh đề từ được chỉ định một bảng có một hàng và không có cột (dĩ nhiên là không thể, nhưng nó thực hiện thủ thuật). Do đó, SELECT 1 + 1
trở thành SELECT 1 + 1 FROM ImaginaryTableWithOneRow
trả về một hàng duy nhất có một cột với giá trị 2
.
Chủ yếu là chúng ta không nghĩ về điều này, chúng ta chỉ quen với thực tế là các lệnh SELECT cho kết quả và thậm chí không nghĩ đến thực tế rằng phải có một số hàng được chọn để trả về một hàng.
Bằng cách SELECT COUNT(*)
bạn đã tương đương với SELECT COUNT(*) FROM ImaginaryTableWithOneRow
trong đó tất nhiên trả về 1.
Nguồn
2011-12-06 11:23:23
Truy vấn chính xác là gì? – Reactormonk
Tôi nghĩ không có gì hơn 'SELECT COUNT (*)', không có tên bảng. Luôn luôn là 1 – Matten
Hi Tass, truy vấn là, khi tôi thực hiện truy vấn sql "Chọn Đếm (*)", thì đầu ra là 1. Điều này có nghĩa là gì 1. Xin lưu ý, không có tên bảng được chỉ định trong truy vấn. – IsmailBaig