sql >> データベース >  >> RDS >> Mysql

2つのselectステートメントを2つの列に結合しますか?

    各クエリが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
    

    クエリが複数の行を返す場合は、別のソリューションを選択する必要があります:

    UNIONを使用できます :(他の列の「NULL」とずれている2つのクエリがあります)

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



    1. インサートでヒットする一意のキーはどれですか?

    2. MySQLの競合状態を適切に回避する方法

    3. MYSQLの最後のログインと過去3か月のログイン数

    4. SQL構文エラー1064