爲什麼下面的查詢在oracle中不起作用?ORA-00904:子查詢中的無效標識符
select * from ENTITY_OWNERSHIP EO
where
(select count (*)
from (
select USER_ID
from ENTITY_OWNERSHIP
where ENTITY_OWNERSHIP.ENTITY_ID = EO.ENTITY_ID
)
) > 0
它產生「ORA-00904:」EO「。」ENTITY_ID「:無效標識符」。但是,當我用精確值替換EO.ENTITY_ID時,例如,10181然後它可以工作。
UPDATE: 完整的查詢看起來像:
select * from ENTITY_OWNERSHIP EO
where
(select count (*)
from (
select USER_ID
from ENTITY_OWNERSHIP
where ENTITY_OWNERSHIP.ENTITY_ID = EO.ENTITY_ID
intersect
select distinct group_id
from USERS.GROUPS
start with GROUP_ID in (select GROUP_ID from USERS.LK_GROUPS where USER_ID=10001)
connect by prior PARENTGROUP_ID=GROUP_ID
)
) > 0
過濾條件不起任何作用。您正在對'entity_ownership'中存在的行進行計數 - 但您是從同一張表中進行選擇。對於原始表中的每一行,「count(*)」必須至少爲1。 –
我給了一個簡單的例子,這是我的錯。請參閱更新的版本。 – ako