【发布时间】:2016-05-22 02:03:59
【问题描述】:
以下查询显示select * 与connect by 和left join 组合不会返回所有列,而只会返回这些条件中使用的列。
这种行为对我很有用,因为 select * 不应该在发布中使用,它对请求数据很有用。
with t1 as (
select 1 id, 0 parent, 'ROOT' name from dual
union all
select 2 id, 1 parent, 'CHILD-1' name from dual
union all
select 3 id, 1 parent, 'CHILD-2' name from dual
), t2 as (
select 1 t1id, 'node' special from dual
)
select * from t1
left join t2 on t2.t1id=t1.id
start with id = 2
connect by prior parent = id;
而其他查询返回所有列
select * from t1
start with id = 2
connect by prior parent = id;
select * from t1
left join t2 on t2.t1id=t1.id;
我找不到有关此功能的文档,有吗?
【问题讨论】:
-
SELECT t1.*, t2.*有效。不知道为什么SELECT *没有。 -
并添加
WHERE name IS NOT NULL AND ( special IS NULL OR special IS NOT NULL )将意味着这些列出现在SELECT *中。
标签: oracle left-join connect-by