2016-04-16 20 views
6

Chúng tôi đã truy vấn này:Sự khác nhau giữa các truy vấn SQL là gì?

SELECT t FROM articles t WHERE t.article_id = 59446 

Còn được gọi là:

SELECT articles FROM articles WHERE articles.article_id = 59446 

Tôi không thể hiểu

SELECT articles FROM articles 

này có nghĩa là gì? Tại sao nó hoạt động?

Cập nhật: bảng 'điều' không có cột 'bài'

+0

Có cột nào có tên là 'bài viết' trong bảng' bài viết' không? – Kevin

+0

@Kevin Không, bảng 'bài viết' không có cột 'bài viết' – Alexander

Trả lời

7

Đây là kết quả của kiến ​​trúc đối tượng-quan hệ Postgres'. Đối với mỗi bảng bạn tạo, cũng có một kết hợp composite type có cùng tên.

Khi bạn chạy

SELECT articles 
FROM articles 

bạn đang lựa chọn một đơn cột với loạiarticles từ bảng tên articles. Nếu bạn chú ý đến đầu ra của truy vấn đó, bạn sẽ nhận thấy rằng kết quả của bạn chỉ chứa một cột duy nhất có giá trị được đặt trong dấu ngoặc đơn, ví dụ: (1,Foobar) (nếu các bài viết trong bảng có hai cột). Nếu bạn chạy select * from articles đầu ra là hai cột (và không có dấu ngoặc đơn)

Điều tương tự cũng xảy ra khi bạn đưa danh sách các cột giữa dấu ngoặc đơn:

select (article_id, article_name) 
from articles 

cũng trả về một đơn cột với một anonymous composite type có chứa hai trường (đây cũng là một ví dụ tốt mà "cột" và "trường" không giống nhau).

Các vấn đề liên quan