Sql 存在与左连接的问题
我有两个表,服务和站点-它们有一对多的关系,服务中的一行可能在站点中有多行 我正在获取站点表,其中一些ID被多次使用。现在我想从该站点的服务中获取所有行Sql 存在与左连接的问题,sql,oracle,left-join,where,exists,Sql,Oracle,Left Join,Where,Exists,我有两个表,服务和站点-它们有一对多的关系,服务中的一行可能在站点中有多行 我正在获取站点表,其中一些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 (
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多次提取所有行,但整个查询从服务表中提取所有行。我希望只有id匹配的行。您应该添加一个条件,并且s.id=st.svcId
,其中包含正确的别名
SELECT *
FROM SERVICE s
WHERE EXISTS
(SELECT *
FROM SITE st
WHERE (siteid='3'
OR siteid ='4')
AND id IN
( SELECT id FROM SITE GROUP BY id HAVING COUNT(*) > 1
)
and s.id = st.svcId
);
您应该添加一个条件和s.id=st.svcId
,其中包含正确的别名
SELECT *
FROM SERVICE s
WHERE EXISTS
(SELECT *
FROM SITE st
WHERE (siteid='3'
OR siteid ='4')
AND id IN
( SELECT id FROM SITE GROUP BY id HAVING COUNT(*) > 1
)
and s.id = st.svcId
);
似乎您需要同时与siteid 3和siteid 4相关的服务(即,该服务的计数将大于1)
似乎您需要同时与siteid 3和siteid 4相关的服务(即,该服务的计数将大于1)
请提供样本数据和预期结果。服务
表格与站点
表格有何关联?子查询与外部表中的任何列都不相关,因此它总是给出服务表中的所有行或无行。请提供示例数据和预期结果。服务表与站点表的关系如何?子查询没有通过外部表中的任何列与外部查询关联,因此它总是从service
表中给出全部行或无行。不知何故,我总是在说“si.svcId”作为无效标识符时遇到sql错误,即使该列存在于DB中。不确定出了什么问题。子查询本身可以工作吗?选择svcId FROM SITE WHERE(siteid='3'或siteid='4')GROUP BY svcId HANG COUNT(*)>1,则没有明显的错误原因,除非您删除了答案中显示的子查询别名si。然后,就没有明显的错误原因。我不能再做任何事情了。不知何故,我总是在这个问题上得到一个sql错误,说“si.svcId”作为无效标识符,即使该列存在于数据库中。不确定出了什么问题。子查询本身可以工作吗?选择svcId FROM SITE WHERE(siteid='3'或siteid='4')GROUP BY svcId HANG COUNT(*)>1,则没有明显的错误原因,除非您删除了答案中显示的子查询别名si。然后,就没有明显的错误原因。我再也做不到了。