【发布时间】:2018-01-02 14:53:28
【问题描述】:
我有两个表,Service 和 Site - 它们具有一对多的关系,Service 中的一行可能在 Site 中具有多行。
我正在获取一些 ID 多次使用的站点表。现在我想从该站点的服务中获取所有行。
SERVICE Table{id}
SITE Table{id,svcId(from SERVICE Table),siteid}
SELECT *
FROM SERVICE
WHERE EXISTS(
SELECT * FROM SITE WHERE (siteid='3' or siteid='4') AND id IN (
SELECT id FROM SITE GROUP BY id HAVING count(*) > 1
))
存在的 Select 查询使用siteid 3 和 4 多次获取所有行但整个查询从SERVICE TABLE 获取所有行。我只期待具有匹配 id 的行。
【问题讨论】:
-
请提供样本数据和预期结果。
-
servicetable 与sitetable 有什么关系?子查询不通过外部表中的任何列与外部查询相关联,因此它始终提供来自service表的所有行或不提供任何行。
标签: sql oracle left-join where exists