Mysql 在两列中合并两个select语句?

Mysql 在两列中合并两个select语句?,mysql,Mysql,我有两个选择语句 一, 二, 我想在不同的列中组合两个select语句,当我使用union all时,它会给我一列和两个查询的结果,我希望每个查询结果在不同的列中,但当我使用像这样的内部联接时 select a.End_Date , b.Start_Date from ( select End_Date from table1 where End_Date not in ( select Start_Date from table1 ) ) a join (select Start_Date

我有两个选择语句

一,

二,

我想在不同的列中组合两个select语句,当我使用union all时,它会给我一列和两个查询的结果,我希望每个查询结果在不同的列中,但当我使用像这样的内部联接时

select a.End_Date , b.Start_Date from
( select End_Date from table1
where End_Date not in (
select Start_Date
from table1
) ) a

join

(select Start_Date
from table1 where Start_Date not in (
select End_Date
from table1)
) b
on 1=1

它给了我结果每个记录重复四次帮助我下一步做什么???

如果每个查询只返回一行,您可以使用:

SELECT 
(select Start_Date
    from table1  where Start_Date not in (
        select End_Date
        from table1)
) AS StartDate,
 (select End_Date from table1
    where End_Date not in (
        select Start_Date
        from table1)
 ) AS EndDate
如果查询返回的行数超过1行,则必须选择其他解决方案:

您可以使用UNION: 在另一列中,这两个查询将与NULL不对齐

(select Start_Date, Null AS EndDate
    from table1  where Start_Date not in (
         select End_Date
         from table1)
) 
UNION
(select  Null As StartDate, End_Date 
    from table1
    where End_Date not in (
        select Start_Date
        from table1)
 ) 
你可以使用JOIN 如果有一个字段要用作连接,则可以使用此字段;如果没有,则可以添加一个字段以连接,但需要检查返回的数据以避免错误 此外,你还必须检查什么样的连接可能对你的左内右旋有好处 在本例中,我添加了一个要联接的字段并使用了内部联接:

SELECT Start_Date, End_Date
FROM
(select 1 as InnerId, Start_Date
    from table1  where Start_Date not in (
        select End_Date
        from table1)
) As Tab1
 INNER JOIN
 (select  1 as InnerId, End_Date from table1
    where End_Date not in (
        select Start_Date
        from table1)
 ) AS Tab2
USING(InnerId)

在结果的每一行上,这两个日期应该如何配对?您能显示一些示例输入和所需的结果吗?这不是与其他两个答案相同,只是不太详细吗?@Barmar这不是一个连接。只需为每个选择提供一列。您可以在每次选择后使用as columnName为列命名。如果select子句返回的行数超过1行,则无法将select子查询放入select子句。我不理解您的评论。其他答案没有连接。它们已被删除,因为它们不起作用。@Barmar我正在通过电话写信,无法复制/粘贴。我会尽量把我的答案修改得更清楚
(select Start_Date, Null AS EndDate
    from table1  where Start_Date not in (
         select End_Date
         from table1)
) 
UNION
(select  Null As StartDate, End_Date 
    from table1
    where End_Date not in (
        select Start_Date
        from table1)
 ) 
SELECT Start_Date, End_Date
FROM
(select 1 as InnerId, Start_Date
    from table1  where Start_Date not in (
        select End_Date
        from table1)
) As Tab1
 INNER JOIN
 (select  1 as InnerId, End_Date from table1
    where End_Date not in (
        select Start_Date
        from table1)
 ) AS Tab2
USING(InnerId)