在实际开发中遇到一个问题。一共三个表。基于一些神奇的协议,表不好放出来。但可以简单谈谈结构
表:MR_APPLICATION、MR_REPORT、MR_PACS_RESOURCE
他们都有一个共同的字段:DELETE_FLAG 逻辑删除字段。俩前者我所操作的数据,都为0,最后者为1
1是0否
我想要实现的是:无论MR_REPORT里面是否有所匹配的数据,都需要返回前二者表中数据
正确的SQL实现:
SELECT
MA.xx,
MPR.xxx,
MR.xxx
FROM MR_APPLICATION MA
LEFT JOIN MR_PACS_RESOURCE MPR ON MA.RESOURCE_ID = MPR.ID AND MPR.DELETE_FLAG = 0
LEFT JOIN MR_REPORT MR ON MA.ID = MR.APPLICATION_ID AND MR.DELETE_FLAG = 0
AND MR.AUDIT_DOCTOR = #{xx}
WHERE MA.ID = #{xx}
AND MA.DELETE_FLAG = 0
错误的实现:
SELECT
MA.xx,
MR.xx,
MPR.xx
FROM MR_APPLICATION MA
LEFT JOIN MR_PACS_RESOURCE MPR ON MA.RESOURCE_ID = MPR.ID AND MPR.DELETE_FLAG = 0