有没有比使用 WHERE ... IN(子查询)更好的方法来编写这个 SQL?
SELECT device.mac, reseller.name, agent.name
FROM device
LEFT JOIN global_user
ON device.global_user_id = global_user.id
LEFT JOIN agent
ON global_user.id = agent.global_user_id
LEFT JOIN reseller
ON global_user.id = reseller.global_user_id
OR agent.reseller_id = reseller.id
WHERE device.global_user_id IN (
SELECT global_user_id
FROM reseller
WHERE id = '200'
) OR device.global_user_id IN (
SELECT global_user_id
FROM agent
WHERE reseller_id = '200'
);
我试图获取特定经销商下所有设备的列表,以及一些经销商/代理详细信息。这将包括直接分配给经销商的设备和分配给经销商下属代理的设备。reseller.id 是唯一的。它将在 postgresql 数据库上执行。
设备分配给代理商和经销商。代理商被分配给经销商。
这个查询有效,但我不经常在 JOIN 中使用 OR,我通常会尽量避免子查询。这个查询概念会经常使用,所以我想确保我没有忽略一些东西。
感谢您的任何反馈。