sql >> Databáze >  >> RDS >> Mysql

spojit dva výběrové prohlášení ve dvou sloupcích?

Pokud každý z vašich dotazů vrátí pouze 1 řádek, můžete použít:

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

Pokud vaše dotazy vracejí více než 1 řádek, musíte zvolit jiné řešení:

Můžete použít UNION (V druhém sloupci budou dva dotazy nesprávně zarovnány s "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)
 ) 

Můžete použít JOIN Pokud máte pole, které chcete použít jako „Připojit se“, můžete použít toto pole, pokud ne, můžete přidat pole pro připojení (ale musíte zkontrolovat vrácená data, abyste předešli chybám) Také musíte zkontrolovat, jaký druh spojení může být dobré pro vás (Vnitřní - Vlevo - Vpravo) V příkladu přidám pole ke spojení a použiji Vnitřní spojení:

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)



  1. Jak nainstalovat a nakonfigurovat ClickHouse na Ubuntu 20.04

  2. Efektivní způsob, jak uložit pole a jeho klíče do databáze

  3. Jak získat seznam sloupců s jedinečnými omezeními v databázi SQL Server - SQL Server / Výukový program TSQL, část 98

  4. získat další a předchozí záznam ID v databázi na Yii