这是我的示例查询。
SELECT * FROM SW_TBL_PROFILE_AGENTS agent
WHERE(
agent.MSISDN in(SELECT Source_Wallet_ID FROM SW_TBL_TRANSACTION WHERE Source_Wallet_ID = agent.MSISDN)
OR
agent.MSISDN in (SELECT Dest_Wallet_ID FROM SW_TBL_TRANSACTION WHERE Dest_Wallet_ID = agent.MSISDN)
)
现在我需要将这个子查询更改为联接,因为存在一个'OR',我很困惑。
答案 0 :(得分:1)
使用EXISTS
如果您只看一种情况
WHERE
agent.MSISDN in (SELECT Source_Wallet_ID FROM SW_TBL_TRANSACTION WHERE Source_Wallet_ID = agent.MSISDN)
基本上这可以重写为
WHERE (SELECT * FROM SW_TBL_TRANSACTION t WHERE t.Source_Wallet_ID = agent.MSISDN)
要为Dest_Wallet_ID
添加其他条件,只需在OR
查询中使用EXISTS
SELECT *
FROM SW_TBL_PROFILE_AGENTS agent
WHERE EXISTS
(
SELECT *
FROM SW_TBL_TRANSACTION t
WHERE t.Source_Wallet_ID = agent.MSISDN
OR t.Dest_Wallet_ID = agent.MSISDN
)