Mysql
 sql >> Database >  >> RDS >> Mysql

combinare due istruzioni select in due colonne?

Se ciascuna delle tue query restituisce solo 1 riga puoi utilizzare:

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 le tue query restituiscono più di 1 riga devi scegliere una soluzione diversa:

Puoi usare UNION :(Avrai le due query disallineate con "NULL" nell'altra colonna)

(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)
 ) 

Puoi usare JOIN Se hai un campo da utilizzare come "Partecipa" puoi utilizzare questo campo, in caso contrario puoi aggiungere un campo per unirti (ma devi controllare i dati restituiti per evitare errori) Inoltre devi controllare che tipo di join potrebbe essere buon per te (Inner - Left - right)Nell'esempio aggiungo un campo per unirti e utilizzare un 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)