如何从多个表中选择不同的值

时间:2013-03-09 12:41:01

标签: mysql sql database

我需要从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's中使用JOIN,但没有连接,所以我无法使用它。

2 个答案:

答案 0 :(得分:51)

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

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

RESULT

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

答案 1 :(得分:3)

SELECT city FROM A
UNION DISTINCT
SELECT city FROM B
UNION DISTINCT
SELECT city FROM C