Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

combinar duas instruções select em duas colunas?


Se cada uma de suas consultas retornar apenas 1 linha, você poderá usar:
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

Se suas consultas retornarem mais de 1 linha, você deverá escolher uma solução diferente:

Você pode usar UNION :(Você terá as duas consultas desalinhadas com "NULL" na outra coluna)
(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)
 ) 

Você pode usar JOIN Se você tem um campo para usar como "Join On" você pode usar este campo, se não você pode adicionar um campo para juntar (mas você precisa verificar os dados retornados para evitar erros) Além disso você tem que verificar que tipo de junção pode ser bom para você (Inner - Left - rigth) No exemplo eu adiciono um campo para juntar e uso um Inner 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)