Загрузить PDF Загрузить PDF

Повторяющиеся строки в Oracle могут быть дифференцированы только с помощью их ‘RowId' (адрес строки).

  1. Это самый простой способ удаления записи.
       SQL 
       > 
       select 
       rowid 
       , 
       name 
       from 
       names 
       ; 
       ROWID 
       NAME 
       ------------------ ------------------------------ 
       AABJnsAAGAAAdfOAAA 
       Alan 
       AABJnsAAGAAAdfOAAB 
       Alan 
       AABJnsAAGAAAdfOAAC 
       Carrie 
       AABJnsAAGAAAdfOAAD 
       Tom 
       4 
       rows 
       selected 
       . 
       SQL 
       > 
       delete 
       from 
       names 
       where 
       rowid 
       = 
       'AABJnsAAGAAAdfOAAA' 
       ; 
       1 
       row 
       deleted 
       . 
       SQL 
       > 
       commit 
       ; 
       Commit 
       complete 
       . 
       SQL 
       > 
       select 
       rowid 
       , 
       name 
       from 
       names 
       ; 
       ROWID 
       NAME 
       ------------------ -------------------- 
       AABJnsAAGAAAdfOAAB 
       Alan 
       AABJnsAAGAAAdfOAAC 
       Carrie 
       AABJnsAAGAAAdfOAAD 
       Tom 
       3 
       rows 
       selected 
       . 
      
    •  SQL 
       > 
       select 
       name 
       from 
       names 
       ; 
       NAME 
       
      Alan Carrie Tom Alan 4 rows selected . SQL > delete from names where name = 'Alan' ; 2 rows deleted . SQL > commit ; Commit complete . SQL > insert into names values ( 'Alan' ); 1 row created . SQL > commit ; Commit complete . SQL > select * from names ; NAME
      Alan Carrie Tom rows selected .
  2. В этом случае, если существуют несколько дубликатов, они будут удалены.
       SQL 
       > 
       select 
       rowid 
       , 
       name 
       from 
       names 
       ; 
       ROWID 
       NAME 
       ------------------ ------------------------------ 
       AABJnsAAGAAAdfOAAA 
       Alan 
       AABJnsAAGAAAdfOAAB 
       Alan 
       AABJnsAAGAAAdfOAAC 
       Carrie 
       AABJnsAAGAAAdfOAAD 
       Tom 
       AABJnsAAGAAAdfOAAF 
       Alan 
       5 
       rows 
       selected 
       . 
       SQL 
       > 
       delete 
       from 
       names 
       a 
       2 
       where 
       rowid 
       > 
       ( 
       select 
       min 
       ( 
       rowid 
       ) 
       from 
       names 
       b 
       3 
       where 
       b 
       . 
       name 
       = 
       a 
       . 
       name 
       4 
       ); 
       2 
       rows 
       deleted 
       . 
       SQL 
       > 
       select 
       rowid 
       , 
       name 
       from 
       names 
       ; 
       ROWID 
       NAME 
       ------------------ ------------------------------ 
       AABJnsAAGAAAdfOAAA 
       Alan 
       AABJnsAAGAAAdfOAAC 
       Carrie 
       AABJnsAAGAAAdfOAAD 
       Tom 
       3 
       rows 
       selected 
       . 
       SQL 
       > 
       commit 
       ; 
       Commit 
       complete 
       . 
       }} 
       </ 
       ul 
       ></ 
       li 
       > 
       < 
       li 
       > 
       Продублируйте 
       линию 
       3 
       сверху 
       и 
       добавьте 
       новое 
       название 
       столбца 
       , 
       если 
       у 
       вас 
       есть 
       несколько 
       столбцов 
       в 
       таблице 
       . 
       Допустим 
       , 
       что 
       у 
       вас 
       есть 
       столбец 
       возрастов 
       , 
       то 
       команда 
       будет 
       следующей 
       . 
       < 
       br 
       >< 
       br 
       > 
       [[ 
       Image 
       : 
       Delete 
       Duplicate 
       Records 
       in 
       Oracle 
       Step 
       4 
       . 
       jpg 
       | 
       center 
       | 
       550 
       px 
       ]] 
       </ 
       ul 
       > 
       {{ 
       CodeBox 
       | 
       < 
       source 
       lang 
       = 
       "oracle8" 
       > 
       SQL 
       > 
       select 
       * 
       from 
       names 
       ; 
       NAME 
       AGE 
       ------------------------------ ---------- 
       Alan 
       50 
       Carrie 
       51 
       Tom 
       52 
       Alan 
       50 
       4 
       rows 
       selected 
       . 
       SQL 
       > 
       delete 
       from 
       names 
       a 
       2 
       where 
       rowid 
       > 
       ( 
       select 
       min 
       ( 
       rowid 
       ) 
       from 
       names 
       b 
       3 
       where 
       b 
       . 
       name 
       = 
       a 
       . 
       name 
       4 
       and 
       b 
       . 
       age 
       = 
       a 
       . 
       age 
       5 
       ); 
       1 
       row 
       deleted 
       . 
       SQL 
       > 
       select 
       * 
       from 
       names 
       ; 
       NAME 
       AGE 
       ------------------------------ ---------- 
       Alan 
       50 
       Carrie 
       51 
       Tom 
       52 
       rows 
       selected 
       . 
       SQL 
       > 
       commit 
       ; 
       Commit 
       complete 
       . 
      
    Реклама

Предупреждения

  • Создайте резервную копию таблицы, чтобы сравнить и показать содержание таблицы до удаления чего-либо (если возникнут вопросы).
       SQL 
       > 
       create 
       table 
       alan 
       . 
       names_backup 
       as 
       select 
       * 
       from 
       names 
       ; 
       Table 
       created 
       . 
      
Реклама

Об этой статье

Эту страницу просматривали 13 502 раза.

Была ли эта статья полезной?

Реклама