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

mysqlの右テーブルの条件を使用した左結合

    PRICES.dateを想定 DATETIMEデータ型です。次を使用してください:

       SELECT pd.id, 
              pd.name, 
              pr.price
         FROM PRODUCTS pd
    LEFT JOIN PRICES pr ON pr.id = pd.id
                       AND DATE(pr.date) = CURRENT_DATE
    

    DATE関数 CURRENT_DATEであるため、時間部分を削除します DATETIMEレコードには時間部分は含まれませんが、時間部分は含まれません。

    この例では、date 基準はに適用されています JOINが行われます。これは派生テーブルのようなもので、JOINが作成される前に情報をフィルタリングします。これにより、WHERE句で基準が指定された場合とは異なる結果が生成されます。

    明日の製品と価格のリストを取得するには、次を使用します:

       SELECT pd.id, 
              pd.name, 
              pr.price
         FROM PRODUCTS pd
    LEFT JOIN PRICES pr ON pr.id = pd.id
                       AND DATE(pr.date) = DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY)
    

    参照:

    1つのクエリで今日と明日の両方の価格が必要な場合は、次を使用します。

       SELECT pd.id, 
              pd.name, 
              pr1.price AS price_today,
              pr2.price AS price_tomorrow
         FROM PRODUCTS pd
    LEFT JOIN PRICES pr1 ON pr1.id = pd.id
                       AND DATE(pr1.date) = CURRENT_DATE
    LEFT JOIN PRICES pr2 ON pr2.id = pd.id
                       AND DATE(pr2.date) = DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY)
    


    1. 結合されたテーブルの結果を1行に制限する

    2. 警告:mysqli_query():mysqliをフェッチできませんでした

    3. テーブルの行を更新する方法、または行が存在しない場合は挿入する方法を教えてください。

    4. 別のINSERTでINSERT...RETURNINGの戻り値を使用できますか?