2010-08-02 49 views
12

Tôi không muốn liệt kê tất cả các cột trong bảngA Các '*' hoạt động cho một bảng, nhưng tôi không muốn lấy lại tất cả các cột trong bảngB từ JOIN. Lý do là, những hồ sơ này đang bị xóa và tôi muốn lưu trữ dữ liệu từ tableA (chỉ) dưới dạng xml được tuần tự hóa trong một khoảng thời gian.Làm cách nào để trả về TẤT CẢ các cột trong một bảng và chỉ một vài cột trong một bảng khác bằng cách tham gia?

+2

Có thể cho rằng, thực hành tốt hơn là gọi từng cột theo tên, thay vì sử dụng *. Ưu điểm của việc gọi ra các cột theo tên có thể bao gồm việc giảm sử dụng băng thông, tăng hiệu suất và các chi phí bảo trì được kiểm soát (khi các cột được thêm vào bảng bên dưới). – kbrimington

+0

bạn có thể sẽ gặp sự cố nếu bạn đang cố gắng sử dụng nhóm theo câu lệnh với phương thức tableName. * Chọn. Trừ khi bạn có một bảng thực sự rộng với rất nhiều biến và nó không bao giờ quan trọng nếu các biến mới được thêm vào (không!), Bạn nên liệt kê một cách rõ ràng các biến. –

Trả lời

20
select tableA.*, tableB.col1, tableB.col2, ... 
+1

@Martin Cô/anh ấy nói cô ấy/anh ấy * không * muốn tất cả các cột trong bảngB – NullUserException

+1

@Null - Hoàn toàn chính xác - Tôi phải cần một loại cà phê khác. –

+0

Bị bỏ qua để khuyến khích sử dụng một ANTipattern SQL – HLGEM

3

Thực tiễn kém là sử dụng lựa chọn * hoặc chọn table1. *. Nó là xấu cho bảo trì và hiệu suất cả hai. Bạn không bao giờ nên làm điều đó trong mã sản xuất.

Chỉ cần sử dụng tên cột mà bạn muốn.

+1

Điều đó rất hữu ích. Nó vẫn sẽ được tốt đẹp để biết các cột mới được thêm vào sẽ được bao gồm tự động từ TableA. Nếu đây không phải là truy vấn để xóa hồ sơ, tôi chắc chắn sẽ mã hóa tất cả các tên cột cần thiết cho truy vấn. Trong trường hợp này, tôi cần phải tuần tự hóa tất cả dữ liệu trong trường hợp cần khôi phục lại. Cảm ơn, –

+0

điểm rất tốt – JBoy

+0

có nhưng dường như anh chàng này và tôi cần tất cả các cột –

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