2

テーブルの最初の N 行を保持し、残りを削除する SQL を作成しようとしています。私はこのSQLを思いつきましたが、ここではカウントを使用できないと言っています。SQLを書き直すのを手伝ってください。

DELETE 
  FROM ZZ_TEST_FINTABLE
 WHERE PROCESS_INSTANCE = ( 
 SELECT MIN(B.PROCESS_INSTANCE) 
  FROM ZZ_TEST_FINTABLE B) 
   AND COUNT(PROCESS_INTANCE) > 9
4

3 に答える 3

0

多分これはあなたのために働くでしょう(Oracle DBで)

DELETE FROM
    ZZ_TEST_FINTABLE 
WHERE
    PROCESS_INSTANCE NOT IN 
    (
        SELECT PROCESS_INSTANCE 
        FROM ZZ_TEST_FINTABLE 
        WHERE ROWNUM < 9
    );
于 2014-09-16T13:17:46.247 に答える
0

テーブルに合わせてこれを変更する必要がありますが、うまくいくはずです:

DELETE FROM myschema.mytable WHERE pkey NOT IN (SELECT pkey FROM myschema.mytable ORDER BY pkey FETCH FIRST 10 ROWS ONLY)
于 2014-09-16T22:12:37.383 に答える
0

AND の代わりに HAVING を使用する必要があります。

   DELETE 
   FROM ZZ_TEST_FINTABLE
   WHERE PROCESS_INSTANCE = ( 
                            SELECT MIN(B.PROCESS_INSTANCE) 
                             FROM ZZ_TEST_FINTABLE B
                            ) 
   HAVING COUNT(PROCESS_INTANCE) > 9

またはこれ

    DELETE 
    FROM ZZ_TEST_FINTABLE A
    INNER JOIN ZZ_TEST_FINTABLE B ON A.PROCESS_INSTANCE= MIN(B.PROCESS_INSTANCE)
    HAVING COUNT(PROCESS_INTANCE) > 9
于 2014-09-16T13:02:37.920 に答える