我需要从主外部查询中的Application表中选择一个列,这意味着我必须重写以下查询以使用连接而不是子查询,以便将Application表移动到主外部查询的范围内。
SELECT XMLValue
FROM DynamicField
WHERE ParentID IN (
SELECT DynamicFieldID
FROM DynamicField
WHERE ParentID IN (
SELECT DynamicFieldID
FROM Application
)
)
有没有人建议如何解决这个问题?
答案 0 :(得分:2)
这样的事情:
SELECT s.*
FROM DynamicField t
INNER JOIN DynamicField t1 on(t.parentID = t1.DynamicFieldID)
INNER JOIN Application s ON(t1.parentID = s.DynamicFieldID)
这将从Application表中选择所有。
答案 1 :(得分:1)
如果我们不包含表中的结果集,我们最好将它放在where存在的部分中,而不是包含在连接中。
SELECT XMLValue, app.[your application column name]
FROM DynamicField mainouter
join application app on exists(
select 1 from DynamicField appfriend
where app.DynamicFieldID = appfriend.ParentID
and appfriend..DynamicFieldID = mainouter.parentID
)