Thông thường, tất cả các lựa chọn 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 tôi có thể thực hiện một số việc như SELECT 1 + 1 FROM SomeTable
và nó sẽ trả về một tập bản ghi có giá trị 2 cho mọi hàng trong bảng SomeTable
.
Bây giờ, nếu chúng ta không quan tâm đến bất kỳ bảng nào, mà chỉ muốn thực hiện tính toán vô hướng của chúng ta, chúng ta có thể muốn làm một cái gì đó như SELECT 1 + 1
. Điều này không được tiêu chuẩn cho phép, nhưng nó hữu ích và hầu hết các cơ sở dữ liệu đều cho phép nó (Oracle không cho phép trừ khi nó được thay đổi gần đây, ít nhất là trước đây nó không).
Do đó, các SELECT trần như vậy được coi như thể chúng có mệnh đề from chỉ định một bảng có một hàng và không có cột (tất nhiên là không thể, nhưng nó thực hiện được mẹo). Do đó SELECT 1 + 1
trở thành SELECT 1 + 1 FROM ImaginaryTableWithOneRow
trả về một hàng với một cột duy nhất có giá trị 2
.
Hầu hết chúng tôi không nghĩ về điều này, chúng tôi chỉ quen với thực tế là các lệnh CHỌN đơn thuần cho kết quả và thậm chí không nghĩ đến thực tế là phải có một số thứ một hàng được chọn để trả về một hàng.
Đang thực hiện SELECT COUNT(*)
bạn đã làm tương đương với SELECT COUNT(*) FROM ImaginaryTableWithOneRow
tất nhiên trả về 1.