如何在MySQL中选择两个单独的非重叠表

时间:2010-07-06 10:12:00

标签: mysql join

我正在寻找一个查询来从两个不同的表中选择行,保持列名相同(我在这里找到了一个结果,用于从两个不同的表中进行选择,但它合并了列名称以便更容易查询)。我需要保留原始列名,但在新的较大表中存在两个不同的表。两个表之间没有重叠的列。

图片,可视化:

alt text

那么,我该怎么做呢?我知道这个查询可能会非常复杂,但任何不太合适的东西都可能比我目前的尝试更好:

SELECT t1.* , t2.*
FROM table1 t1 RIGHT OUTER JOIN table2 t2
ON r.someColumn1 = rc.someColumn2
UNION
SELECT t1.* , t2.*
FROM table1 t1 LEFT OUTER JOIN table2 t2
ON r.someColumn1 = rc.someColumn2

这确实有效,但只要没有someColumn1 = someColumn2的情况 - 当然这很容易发生。

任何帮助都表示赞赏,我为可能是一个非常愚蠢的问题道歉,聪明的回答是“不要做,你这个傻瓜!”。

2 个答案:

答案 0 :(得分:6)

您可以将加入条件设置为永不匹配:

SELECT t1.* , t2.*
FROM table1 t1 RIGHT OUTER JOIN table2 t2
ON 1 = 0
UNION
SELECT t1.* , t2.*
FROM table1 t1 LEFT OUTER JOIN table2 t2
ON 1 = 0

我没有MySQL进行测试,但它适用于SQL Server。

答案 1 :(得分:3)

编辑:我的第一个回答是错的:

select * from Events
  left join GroupList on ID=null
union 
select Events.*,GroupList.* from GroupList 
  left join Events on GID=null

在上面的GID和ID中是表中的关键字段。