2012-04-18 28 views
5

Cho phép tưởng tượng một tham gia của 3 bảng, nó có 14 cột chẳng hạn. Tôi muốn đổi tên một trong các cột bằng bí danh. Có cách nào hay thực hiện nó mà không cần phải viết 13 tên cột khác trong câu lệnh chọn?Chọn * và tạo bí danh trên một cột

Những gì tôi đang tìm kiếm trong giả là

SELECT * [rename user.login as username] from users join 
     (select * from statistics join accounts) 
+2

Bạn không nên sử dụng 'select *' trong mã sản xuất. Tôi khá chắc chắn rằng viết 13 tên cột sẽ thiên đường mất ít thời gian hơn viết câu hỏi này. –

+0

Nhưng anh ta sẽ không bao giờ học những điều mới ... – dani24

Trả lời

3

cú pháp đề xuất của bạn là một trong những tốt, IMO. Trong thực tế, nó rất giống với ngôn ngữ cơ sở dữ liệu Tutorial D:

user RENAME (login AS username) 

sẽ chiếu tất cả 14 thuộc tính từ user relvar với một đổi tên theo quy định.

Tương tự, Hướng dẫn D có một toán tử chiếu ALL BUT ví dụ:

user { ALL BUT login } 

sẽ dẫn đến mối quan hệ 13 thuộc tính trong trường hợp của bạn.

Đáng buồn thay, SQL chưa bao giờ có các phím tắt hữu ích này và có thể sẽ không bao giờ xảy ra. Có lẽ chúng ta nên xem xét mình may mắn để có được SELECT * trong những ngày đầu; chúng tôi sẽ không bao giờ được cấp nó trong thời gian gần đây! Nhóm đại diện cho người dùng SQL đã đưa ra đề xuất cho cú pháp loại SELECT * BUT <commalist> đối với ủy ban tiêu chuẩn SQL nhưng nó đã bị từ chối. SELECT * is disliked on SO too!

4
select users.login as username, users.* 
    from users 

Thật không may là cột sẽ xuất hiện hai lần, nhưng không có gì bạn có thể làm là.

Với tham gia nó sẽ giống như thế này:

select u.login as username, u.*, s.* 
    from users as u, statistics as s 
    where u.user_id = s.user_id 
+0

"cột sẽ xuất hiện hai lần, nhưng không có gì bạn có thể làm" - Tôi nghi ngờ họ muốn đổi tên cột để thực hiện tham gia tự nhiên (lưu ý sự vắng mặt của tham gia rõ ràng các mệnh đề), chắc chắn sẽ giải quyết vấn đề của cột xuất hiện hai lần khi sử dụng 'SELECT *'. – onedaywhen

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