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

IF /ケースで内部結合フィールドを選択する方法は?

    このクエリを試してください(編集済み )-

    SELECT c.*,
      CASE c.comment_type WHEN 8 THEN p1.photo_p_id WHEN 17 THEN p2.photo_id ELSE NULL END photo_id,
      CASE c.comment_type WHEN 8 THEN p1.column1 WHEN 17 THEN p2.column1 ELSE NULL END column1
    FROM comments c
      LEFT JOIN photos p1
        ON c.object_id = p1.photo_p_id
      LEFT JOIN photos p2
        ON c.object_id = p2.photo_id
    

    もう1つのバリエーション-

    SELECT c.*, p.*
    FROM comments c
      JOIN photos p
        ON c.comment_type = 8 AND c.object_id = p.photo_p_id OR c.comment_type = 17 AND c.object_id = p.photo_id
    



    1. plsqlのプロシージャ本体内にカーソルを作成する方法

    2. countとgroupbyを使用したMySQLクエリ

    3. OracleCASEの短絡がgroupbyで機能しない

    4. スケジューリングに関するMySQLの質問