如果先前的连接为空,则为条件左连接

时间:2019-10-08 09:08:21

标签: sql sql-server

我有一个表“标识符”,它与其他表具有一对多的关系。 其他表(10个表)具有指向表“标识符”的前向键。 FK可能为空。

对于表“标识符”中的每一行,我需要知道记录是否与任何其他表相关。

我可以这样写:

function membershipuser_status_changed($user_membership, $old_status, $new_status ){
  error_log('wc_memberships_user_membership_status_changed');
}
add_action( 'wc_memberships_user_membership_status_changed', 'membershipuser_status_changed', 10, 3 );

但是,如果第一个左连接(至表Table1)不为空,则出于性能原因,我想跳过其他左连接。 从1到10的表有数百万条记录,如果没有必要,我不希望加入它们。

1 个答案:

答案 0 :(得分:0)

我不确定,但是您可以尝试一下。

SELECT * FROM IDENTIFIER
LEFT JOIN TABLE1 T1 on T1.IDENTIFIER_ID = IDENTIFIER.ID
LEFT JOIN TABLE2 T2 on T2.IDENTIFIER_ID = IDENTIFIER.ID AND T1.IDENTIFIER_ID IS NULL
LEFT JOIN TABLE3 T3 on T3.IDENTIFIER_ID = IDENTIFIER.ID AND T2.IDENTIFIER_ID IS NULL
LEFT JOIN TABLE4 T4 on T4.IDENTIFIER_ID = IDENTIFIER.ID AND T3.IDENTIFIER_ID IS NULL
LEFT JOIN TABLE5 T5 on T5.IDENTIFIER_ID = IDENTIFIER.ID AND T4.IDENTIFIER_ID IS NULL