Најбоље праксе дизајна базе података препоручују коришћење ограничења УНИКУЕ за спречавање дупликата у бази података. Међутим, када радите са лоше дизајнираном базом података или нечистим подацима, можда ћете морати сами да пронађете дупликате и ручно их избришете.
Читајте даље да бисте сазнали како да пронађете дупликате у СКЛ бази података и како да их избришете.
Направите узорак базе података
У сврху демонстрације, креирајте табелу под називом Корисници са колоном имена и резултата тако што ћете покренути овај СКЛ упит.
КАПСТОАКОПОСТОЈИКорисници;
КРЕИРАЈСТОКорисници (
пк_ид инт ПРИМАРНИ КЉУЧ,
име ВАРЦХАР (16),
резултат ИНТ,
);
Уметните неке узорке вредности тако што ћете покренути овај упит:
ИНСЕРТУ
Корисници (пк_ид, име, резултат)
ВРЕДНОСТИ
(1, 'Јане', 20),
(2, 'Јован', 13),
(3, 'Алекс', 32),
(4, 'Јован', 46),
(5, 'Јане', 20),
(6, 'Мари', 34),
(7, 'Јане', 20),
(8, 'Јован', 13)
Имајте на уму да неки од ових редова садрже дупле вредности за колону имена.
Слободно погледајте ове СКЛ команде и упити ако вам је потребно детаљније објашњење како да манипулишете базама података помоћу СКЛ-а.
Коришћење ГРОУП БИ за проналажење дупликата вредности
Можете користите наредбу ГРОУП БИ да уредите вредности који испуњавају одређене услове у истој групи.
Рецимо да имена у табели узорка морају бити јединствена. Можете користити ГРОУП БИ да групишете редове који деле исто име.
СЕЛЕЦТиме, ЦОУНТ(име)
ОД корисника
ГРУПА ПО имену
ИМАТИ БРОЈ (име) > 1
ЦОУНТ вам омогућава да изаберете редове који имају више корисника са истим именом.
Када покренете овај упит, база података ће вратити редове који садрже Џона и Џејн као дупликате.
Брисање дупликата из базе података
Након што пронађете дупликате, можда ћете желети да их избришете помоћу наредбе ДЕЛЕТЕ.
За овај пример, покрените следећи упит:
ВИТХ цте КАО (
СЕЛЕЦТ *
РОВ_НУМБЕР() ПРЕКО (
ПАРТИТИОН БИ
име, резултат
ОРДЕР БИ
име, резултат
) Р
ИЗ
Корисници
)
ИЗБРИШИИЗ цте
ГДЈЕ Р > 1;
Овај упит користи ЦТЕ израз да пронађе дупликате, а затим их брише све осим једног.
Зашто би требало да избришете дуплиране податке
Брисање дупликата података није обавезно. Међутим, омогућава вам да ослободите простор који користе дупли редови.
Мање редова такође значи да се упити могу извршавати много брже што доводи до већих перформанси. Користите упите у овом водичу да бисте лакше пронашли и уклонили дупликате из СКЛ базе података.