Mysql 如何从多个表中选择不同的值
我需要从3个表中获得不同的值 执行此代码时:Mysql 如何从多个表中选择不同的值,mysql,sql,database,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
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的
,但是没有连接,所以我无法使用。关键字将返回结果列表上的唯一的
记录。当指定ALL
()时,将在结果集中保留重复项,而OP不希望这样做
SELECT city FROM tableA
UNION
SELECT city FROM tableB
UNION
SELECT city FROM tableC
╔════════╗
║ CITY ║
╠════════╣
║ Krakow ║
║ Paris ║
║ Rome ║
║ London ║
║ Oslo ║
╚════════╝
正是我需要的。这个联盟是什么样的?你能解释一下吗?我不知道为什么这个答案被否决了。呵呵,据我所知,我理解这个问题<代码>:)让我们听听投票人的观点。@user123\u 456查看我的更新答案。这里还有演示好的,如果你不介意的话,我只有一个问题。如果我在每个表中都有一个附加列,例如
spa\u column
我需要将where子句放在哪里,以便它影响所有表。将整个查询包装在子查询中,这也会产生正确的答案,但为什么需要添加DISTINCT
关键字和UNION
将始终返回唯一的记录,除非指定了ALL
?你说得很对。“UNION”默认为“UNION DISTINCT”(而不是“UNION ALL”)
SELECT city FROM A
UNION DISTINCT
SELECT city FROM B
UNION DISTINCT
SELECT city FROM C