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

mysqlの条件付き結合は列に依存します

    テーブル間で条件付きで結合を作成することはできません。最善の方法は、LEFT JOINを使用することです。 CASEを使用します SELECTで 声明。表示する共通の列を指定する必要があります

    SELECT *,
            (CASE notification_base.type
                WHEN 'photo'
                THEN photo.columnName1
                ELSE post.ColumnName1
            END) as ColumnName1,
            (CASE notification_base.type
                WHEN 'photo'
                THEN photo.columnName2
                ELSE post.ColumnName2
            END) as ColumnName2
    FROM notification_action
        INNER JOIN notification_base
            ON notification_action.not_base_id = notification_base.id
        INNER JOIN notification_sub
            ON notification_action.not_base_id = notification_sub.not_base_id
        INNER JOIN photo
            ON photo.id = notification_base.object_id
        INNER JOIN post
            ON post.id = notification_base.object_id
    WHERE notification_sub.user_id = 3
        AND notification_sub.lastShowDate < notification_action.creationDate;
    



    1. Hibernatehbm2ddl.autoのデフォルト値

    2. SQLServerでOVER句とPARTITIONBY句を使用して現在の合計を計算する

    3. 包括的ではない間のSQL

    4. oracle11gとHibernateSpringとjsfの統合