私のSQLには、同じ条件に従って2つの結果フィールドがあります。今私はそれを2回書く必要があります。データベースコンパイラが自動的にコードを自動的に最適化しているのか、SQLを最適化するために他の方法を変更しなければならないのだろうか?条件が満たされている場合にOracleのコードを最適化する方法は?
select id,parent_id as p_Id,name,
(case when exists(select * from t_group t2 where t1.id=t2.parent_id)
then 2 else 1 end) type,
(case when exists(select * from t_group t2 where t1.id=t2.parent_id)
then 'true' else 'false' end) as is_Parent
from t_group t1
私はこのように変更しようとしましたが、失敗しました。
select id,parent_id as p_Id,name,
(case when exists(select * from t_group t2 where t1.id=t2.parent_id)
then 2 else 1 end) type,
(case when type==1
then 'true' else 'false' end) as is_Parent
from t_group t1
「インラインビュー」の名前を指定する必要がありますか?多くのシステムで標準SQLが必要ですが、Oracleはそうではありません。 –
いいえ、そうではありません。しかし、あなたはその列を参照したいと思うし、あいまいさがあります。私は私の答えを更新します。 –