2010-12-31 79 views
5

HI,Chọn một giá trị riêng biệt trong nhiều bảng (sql)

Tôi có một cơ sở dữ liệu với 3 bảng tab1, tab2, tab3 mà có chính xác các cột tương tự, ví dụ:

TAB1 
cola, colb, colc, cold 
TABB 
cola, colb, colc, cold 
... 

Bây giờ tôi muốn tìm kiếm tất cả các khác biệt "colb" giá trị, đây là truy vấn:

SELECT DISTINCT colb FROM TAB1 

trình một cách hoàn hảo nhưng bây giờ tôi sẽ tìm kiếm tất cả các giá trị khác biệt "colb" trong 3 bảng của tôi "tab1", "tab2", "tab3 ":

SELECT DISTINCT colb FROM TAB1, TAB2, TAB3 

Và bây giờ SQL trả về lỗi: "Cột 'cột' trong danh sách trường không rõ ràng" Sau một số tìm kiếm, tôi hiểu đó là vì cột 'colb' tồn tại trong 3 bảng của tôi.

Vậy cách tìm kiếm trong 3 bảng của tôi có giá trị khác biệt so với cùng một cột? Tôi không thể sử dụng LEFT JOIN vì tôi muốn tìm kiếm trong tất cả 3 bảng của tôi chứ không phải trong một trong số chúng.

Bạn có ý tưởng không? Cảm ơn

+0

Thank mọi người !!! – Jensen

Trả lời

5

Truy vấn đơn lẻ này với công đoàn sẽ chăm sóc các giá trị khác biệt cho bạn.

select colb from tab1 union 
    select colb from tab2 union 
    select colb from tab3; 
+0

Cảm ơn điều đó giải quyết vấn đề của tôi !!! – Jensen

2
select colb from tab1 union 
select colb from tab2 union 
select colb from tab3 
0
SELECT DISTINCT TAB1.colb,TAB2.colb,TAB3.colb FROM TAB1, TAB2, TAB3 
+1

Điều này rất có thể sẽ lãng phí quá nhiều tài nguyên để nhận được câu trả lời. Tùy thuộc vào kích thước của TAB1, TAB2 và TAB3 điều này có thể không bao giờ kết thúc. – cherouvim

0

CHỌN cola biệt từ công đoàn tab1

CHỌN cola biệt từ công đoàn tab2

CHỌN cola biệt từ tab3

+1

Union xử lý sự khác biệt cho bạn. Không cần bao gồm nó trong truy vấn. – cherouvim

+0

Chính xác. Đi cho giải pháp Ronnis. !!! –

0

Trong Sybase, bạn có thể sử dụng cú pháp mà @cherouvim được đăng, bạn có thể tưởng tượng truy vấn phụ dưới dạng bảng.

Bạn cũng có thể sử dụng bảng tạm

select colb into #t1 from TAB1 
insert into #t1(colb) values(select colb from TAB2) 
insert into #t1(colb) values(select colb from TAB3) 
select distinct colb from #t1 
Các vấn đề liên quan