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

标签 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

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

有什么想法吗?我想在 JOIN 中使用 id's 但没有连接所以我不能使用它。

最佳答案

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

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

结果

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

关于mysql - 如何从多个表中选择不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15310782/

相关文章:

mysql - 使用 COUNT 命令在 MYSQL 中创建查询

java - 在结果集开始之前运行多个sql

sql-server - SQL Server : Non-null unique vs. 主键

php - 如何在 Laravel 网站中实现主题选项?

c# - 如何从包含 5000 条记录的 Excel 文件插入到 documentDB?

MySQL SELECT 其中 bool 字段为 NULL 或 false

mysql - SQL选择随时间分布的行

c# - 大表查询连接超时

mysql - 在 SQL 表中容纳航路点

sql - Snowflake - 一次运行多个 SQL 查询