Mysql
 sql >> Base de données >  >> RDS >> Mysql

combiner deux instructions select dans deux colonnes ?

Si chacune de vos requêtes ne renvoie qu'une seule ligne, vous pouvez utiliser :

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

Si vos requêtes renvoient plus d'une ligne, vous devez choisir une autre solution :

Vous pouvez utiliser UNION :(Vous aurez les deux requêtes mal alignées avec "NULL" dans l'autre colonne)

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

Vous pouvez utiliser JOIN Si vous avez un champ à utiliser comme "Join On", vous pouvez utiliser ce champ, sinon vous pouvez ajouter un champ à joindre (mais vous devez vérifier les données renvoyées pour éviter les erreurs) Vous devez également vérifier quel type de jointure peut être bon pour vous (Inner - Left - rigth) Dans l'exemple, j'ajoute un champ pour joindre et utiliser une 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)