MySQL JOIN 的结果 UNION

Posted

技术标签:

【中文标题】MySQL JOIN 的结果 UNION【英文标题】:MySQL JOIN the result of UNION 【发布时间】:2013-10-07 06:59:21 【问题描述】:

是否可以将两个表的UNION 的结果与第三个表连接起来?像这样的:

(SELECT DISTINCT `Fund_ID`, `Fund_Name` FROM `admin` 
    UNION 
SELECT `Fund_ID`,`Fund_Name` FROM `admin_custom` WHERE `admin_custom`.`user_id` = 361)  a
LEFT JOIN `qt1`
ON `qt1`.`Fund ID` = a.`Fund_ID`

但此代码不起作用。我可以在UNION 之前将JOIN 移动到每个SELECT 查询中,但宁愿尝试JOINUNION 结果。

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

是的,这是可能的。但是,您的代码不正确,因为您缺少 SELECT 语句本身,因为您的第一个选择变成了行集(运行时创建的表)。 IE。您必须指定 SELECT 运算符和要获取的字段。最简单的情况:

SELECT
  a.*
FROM
  (SELECT DISTINCT `Fund_ID`, `Fund_Name` FROM `admin` 
    UNION 
   SELECT `Fund_ID`,`Fund_Name` FROM `admin_custom` WHERE `admin_custom`.`user_id` = 361)  AS a
  LEFT JOIN `qt1`
    ON `qt1`.`Fund ID` = a.`Fund_ID`

【讨论】:

【参考方案2】:
SELECT * FROM
(SELECT DISTINCT `Fund_ID`, `Fund_Name` FROM `admin` 
    UNION 
SELECT `Fund_ID`,`Fund_Name` FROM `admin_custom` WHERE `admin_custom`.`user_id` = 361)  a
LEFT JOIN `qt1`
ON `qt1`.`Fund ID` = a.`Fund_ID`;

【讨论】:

以上是关于MySQL JOIN 的结果 UNION的主要内容,如果未能解决你的问题,请参考以下文章

mysql的unionleft join right join inner join和视图学习

MySql语句中Union和join的用法

Mysql查询与Union All和Join for League表

mysql数据库多个表union all查询并排序的结果为啥错误

为啥在mysql中第一个union两个子句的order by不起作用

mysql的查询语句union是啥意思