我的代码工作并不像我想:如果连接返回false,则立即使用其他连接。它可能吗?
SELECT
r.id,
IF(exp.id != 0, 1,
IF(exp2.id != 0, 1,
IF(exp3.id != 0, 1, 0)
)
) AS white_list
FROM rates AS r
LEFT JOIN
exclusion_policies AS exp ON (
1 = 1
AND exp.client_id = r.client_id
AND exp.mcc = r.mcc
AND exp.mnc = r.mnc
AND exp.active = 1
)
LEFT JOIN
exclusion_policies AS exp2 ON (
1 = 1
AND exp2.client_id = r.client_id
AND exp2.mcc = r.mcc
AND exp2.active = 1
)
LEFT JOIN
exclusion_policies AS exp3 ON (
1 = 1
AND exp3.client_id = r.client_id
AND exp3.active = 1
)
我想,如果先加入exp为true,则停止verfy EXP2和EXP3: somethig像:
CASE WHEN
LEFT JOIN
exclusion_policies AS exp ON (
1 = 1
AND exp.client_id = r.client_id
AND exp.mcc = r.mcc
AND exp.mnc = r.mnc
AND exp.active = 1
)
THEN true // exp is not null, ONLY
ELSE
CASE WHEN
LEFT JOIN
exclusion_policies AS exp2 ON (
1 = 1
AND exp2.client_id = r.client_id
AND exp2.mcc = r.mcc
AND exp2.active = 1
)
THEN true // exp2 is not null, ONLY
ELSE
CASE WHEN
LEFT JOIN
exclusion_policies AS exp3 ON (
1 = 1
AND exp3.client_id = r.client_id
AND exp3.active = 1
)
THEN true // exp3 is not null, ONLY
ELSE false // exp, exp2, exp3 are null
END
END
END
我需要得到真正的(1),IF
IF(exp.id != 0, 1,
IF(exp2.id != 0, 1,
IF(exp3.id != 0, 1, 0)
)
) AS white_list
顺便说一下,也许REVERS更加优化LEFT JOIN EXP3,2,1只的第三个,任何方式
您可以发表表格定义和样本数据吗? –