我正在尝试调整查询中包含 IN 子句的 SQL 查询。
我尝试用 Join 替换 IN 并查看了查询计划。两者在执行时间上看起来相似,但结果不同。有人可以帮我解决这个问题吗?我在 pgadmin III 中使用商店数据库。提前致谢。原始查询:
SELECT person.id
FROM SHOP.person
WHERE person.id IN (SELECT personid
FROM SHOP.contactperson
WHERE companyid = 5);
至
SELECT person.id
FROM SHOP.person
JOIN SHOP.contactperson
ON person.id = contactperson.id
WHERE contactperson.companyid = 5;
编辑:现在这个查询返回正确的结果:
SELECT person.id
FROM SHOP.person
JOIN SHOP.contactperson
ON person.id = contactperson.personid
WHERE contactperson.companyid = 5;
我使用contactperson.id
而不是contactperson.id
,当我将其更改为正确的查询时,它给了我正确的结果。