1

サブクエリが複数の行を返し、最初の行が必要で、max関数を保持します

Select ...
Where GHTY_FIRME.FIRME_ID= (Select   FIRME_ID
                           FROM imag_verification_tube 
                           WHERE (numero_dossier =  '12004' OR NUMERO_TIRE= '12004')
                           AND CREE_LE = (select max (CREE_LE) 
                           from tableX where(numero_dossier ='12004' OR 
                           NUMERO_PQDCS= '12004 ')));
4

1 に答える 1

1

rownum疑似列の使用:

Select ...
Where GHTY_FIRME.FIRME_ID= (Select   FIRME_ID
                           FROM imag_verification_tube 
                           WHERE (numero_dossier =  '12004' OR NUMERO_TIRE= '12004')
                           AND CREE_LE = (select max (CREE_LE) 
                                          from tableX 
                                          where(numero_dossier ='12004' 
                                               OR NUMERO_PQDCS= '12004 ') 
                                               and rownum < 2));

ROWNUMおよび制限結果についても参照してください。

そうは言っても、SQLの最適化を試みることができます。私が最初に行うことの1つは、内部SQLを結合に変換することです。また、ビジネスロジックによっては、or条件削除される場合があります。

于 2013-01-10T20:06:59.373 に答える