2017-09-29 10 views
0

私が参加し使用してクエリの下に書き直し助けてください: -入れ子になったSQLクエリを結合するにはどうすればいいですか?

update "+tableName+" set F_RK='T' 
where ISN in ( 
    SELECT DISTINCT B.ISN 
    FROM "+tableName+"_PE_BA AS B,"+regisTableName+" AS C, F0093 AS D 
    WHERE B.F_BB = C.F_AB 
    AND C.F_FB = D.F_AB 
    AND D.F_OA = 1 
    AND C.F_FC = (SELECT MAX(E.F_FC) FROM "+regisTableName+" AS E WHERE E.F_AB = C.F_AB)) 
and F_RK is null or F_RK=''"; 

はまた、私は、クエリを最適化したいです。

+2

このデータベースは、 – Rams

+1

plsです。使用しているDBMS(MySQL、SQL Server、Orcleなど)にタグを付けます。 –

+0

あなたの 'tableName'は' "tableName" + _PE_BA'、 'regisTableName'、または' F0093'のいずれかで結合できますか? – Veljko89

答えて

1

最適化のためには、where exists(パフォーマンスが向上する場合もあります)を考慮してください。読みやすくするために、明示的な結合を使用してください。

Update MyTable 
set F_RK = 'T' 
where exists 
(
select 1 
from Table2 B 
inner join Table3 C 
    on B.F_BB = C.F_AB 
inner join Table3 D 
    on C.F_FB = D.F_AB 
    AND D.F_OA = 1 
where C.F_FC = (SELECT MAX(E.F_FC) FROM Table4 E WHERE E.F_AB = C.F_AB) 
) 
or F_RK is null 
or F_RK='' 
+0

is query F_RKがヌルかF_RK = '' "の部分を考えると、 –

+0

@RiddhiPatil今は – JohnHC

+0

ありがとう@JohnHC .. –

関連する問題