Следующий запрос показывает, что 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 *
этого не делает. - person MT0   schedule 11.02.2016WHERE name IS NOT NULL AND ( special IS NULL OR special IS NOT NULL )
будет означать, что эти столбцы появятся вSELECT *
. - person MT0   schedule 11.02.2016