Mysql从两个表中选择进行比较

Mysql从两个表中选择进行比较,mysql,sql,Mysql,Sql,我已经搜索了其他相关的线程,但我不认为我在寻找联合或外部连接。我想做的理论上很简单。我在两个不同的数据库中有两个表,它们的数据大致相同。我试着把它们放在一起,这样我们可以比较它们。字段名称不同,但数据非常相似 想象一下这样的情景: person_id first last department +----------+----------+---------------+--------------+ | foo_1|Bob |Bobers

我已经搜索了其他相关的线程,但我不认为我在寻找联合或外部连接。我想做的理论上很简单。我在两个不同的数据库中有两个表,它们的数据大致相同。我试着把它们放在一起,这样我们可以比较它们。字段名称不同,但数据非常相似

想象一下这样的情景:

 person_id  first      last            department
+----------+----------+---------------+--------------+
|     foo_1|Bob       |Boberson       | Accounting   |
|     foo_2|Steven    |McStevens      | Sales        |
|     foo_3|Jane      |Janeston       | Support      |
|     bar_1|Bob       |Boberson       | Accounting   |
|     bar_2|Doug      |Dugger         | IT           |
|     bar_3|Jane      |Janeston       | Support      |
+----------+----------+---------------+--------------+
表'foo':

 id  first_name  last_name      dept_name
+---+----------+---------------+-------------+
|  1|Bob       |Boberson       | Accounting  |
|  2|Steven    |McStevens      | Sales       |
|  3|Jane      |Janeston       | Support     |
+---+----------+---------------+-------------+
表'bar':

 person_id  first      last            department_id
+----------+----------+---------------+--------------+
|         1|Bob       |Boberson       |             2|
|         2|Doug      |Dugger         |             5|
|         3|Jane      |Janeston       |             3|
+----------+----------+---------------+--------------+
我试图以这样的方式结束:

 person_id  first      last            department
+----------+----------+---------------+--------------+
|     foo_1|Bob       |Boberson       | Accounting   |
|     foo_2|Steven    |McStevens      | Sales        |
|     foo_3|Jane      |Janeston       | Support      |
|     bar_1|Bob       |Boberson       | Accounting   |
|     bar_2|Doug      |Dugger         | IT           |
|     bar_3|Jane      |Janeston       | Support      |
+----------+----------+---------------+--------------+
通过使用“as”更改列名,使用concat更改各个字段,并进行适当的联接以填充“department”字段,很容易使两个表彼此相似。但是,我不能做一个“加入”并保持这种逻辑。我真的需要为每个表执行select语句。这里可能有一个简单的解决方案,但我没有看到


编辑:你们说得对,这是工会的标准案例。我在想,出于某种原因,工会总是添加列。谢谢。

我认为您可以使用
UNION
如果您不想删除任何重复的名称,那么这将在一个查询中从两个表中获取数据,您可以将表名作为查询的一部分,在需要时为person\u id添加前缀

这需要测试/改进,但:

(SELECT foo AS table, f.id AS person_id, f.first_name AS first, f.last_name AS last, f.dept_name FROM foo AS f)
UNION
(SELECT bar AS table, b.person_id, b.first, b.last, FROM bar AS b)

这看起来就像一个联盟


看一看,我没有费心查找部门ID,但这应该会给你一个基本的想法。

那么你不想加入/修剪每个表中的重复项?那么你想要一个
联盟
?嗯,你可能是对的。我在想一个联盟会创造更多的专栏。我可能没有做作业。