34

我需要从 3 个表中获取不同的值。

当我执行此代码时:

select DISTINCT(city) from a,b,c 

我收到一个错误,说我的列“城市”不明确。

我也试过这个:

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

使用此代码,我不会从我的表中收到任何信息。

让我向您展示我正在尝试做的示例:

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

我需要得到这样的结果

RESULTS
 city
 ----
 Krakow
 Paris
 Rome
 London
 Oslo

城市的顺序对我来说并不重要,我只需要拥有它们,每个城市应该只有一个代表。

任何的想法?我正在考虑使用id'sJOIN没有连接所以我不能使用它。

4

2 回答 2

68

UNION关键字将返回结果列表中的unique记录。指定时ALLUNION ALL)将在结果集上保留重复项,这是 OP 不想要的。

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

结果

╔════════╗
║  CITY  ║
╠════════╣
║ Krakow ║
║ Paris  ║
║ Rome   ║
║ London ║
║ Oslo   ║
╚════════╝
于 2013-03-09T12:41:50.547 回答
4
SELECT city FROM A
UNION DISTINCT
SELECT city FROM B
UNION DISTINCT
SELECT city FROM C
于 2013-03-09T12:44:32.113 回答