2013-03-09 61 views
20

Tôi cần nhận các giá trị khác biệt từ 3 bảng.cách chọn giá trị khác biệt từ nhiều bảng

Khi tôi thực hiện mã này:

select DISTINCT(city) from a,b,c 

tôi nhận được một lỗi mà nói rằng cột của tôi 'thành phố' là mơ hồ.

Ngoài ra tôi đã cố gắng này:

select DISTINCT(city) from a NATURAL JOIN b NATURAL JOIN c 

Với mã này, tôi không nhận được gì từ các bảng của tôi.

Hãy để tôi chỉ cho bạn trên ví dụ về những gì tôi đang cố gắng để làm:

TABLE A    TABLE B    TABLE C 
id | city   id | city   id | city 
1 | Krakow   1 | Paris   1 | Paris 
2 | Paris   2 | London   2 | Krakow 
3 | Paris   3 | Oslo 
4 | Rome 

Và tôi cần để có được kết quả như thế này

RESULTS 
city 
---- 
Krakow 
Paris 
Rome 
London 
Oslo 

Trình tự các thành phố là không quan trọng với tôi Tôi chỉ cần có tất cả, và chỉ nên có một đại diện của mỗi thành phố.

Bất kỳ ý tưởng nào? Tôi đã suy nghĩ để sử dụng id's trong JOIN nhưng không có kết nối vì vậy tôi không thể sử dụng điều đó.

Trả lời

40

Từ khóa UNION sẽ trả lại unique bản ghi trên danh sách kết quả. Khi chỉ định ALL (UNION ALL) sẽ giữ bản sao trên tập hợp kết quả mà OP không muốn.

SELECT city FROM tableA 
UNION 
SELECT city FROM tableB 
UNION 
SELECT city FROM tableC 

KẾT QUẢ

╔════════╗ 
║ CITY ║ 
╠════════╣ 
║ Krakow ║ 
║ Paris ║ 
║ Rome ║ 
║ London ║ 
║ Oslo ║ 
╚════════╝ 
+0

Chính xác những gì tôi cần. UNION này giống như DISTINCT? bạn có thể giải thích nó một chút không? –

+0

Tại sao mọi người bỏ phiếu cho bạn? Đây là câu trả lời đúng –

+0

Tôi không biết tại sao câu trả lời này đã được giảm giá. hehe Theo như tôi biết, tôi hiểu câu hỏi. ':)' Hãy nghe từ quan điểm của người chia sẻ. –

3
SELECT city FROM A 
UNION DISTINCT 
SELECT city FROM B 
UNION DISTINCT 
SELECT city FROM C 
+2

điều này cũng tạo ra câu trả lời đúng nhưng tại sao bạn cần thêm từ khóa 'DISTINCT' với' UNION' sẽ luôn trả về các bản ghi duy nhất trừ khi 'ALL' là được chỉ định? [SQL Fiddle Demo] (http://www.sqlfiddle.com/#!2/442ef/7) –

+1

Bạn nói đúng. "UNION" mặc định là "UNION DISTINCT" (thay vì "UNION ALL") –

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