Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 14609|Odgovoriti: 0

[Napitnine] SQL Kako poizvedovati tabelo za odstranitev podvojenih datotek

[Kopiraj povezavo]
Objavljeno na 9. 10. 2014 11:03:04 | | |

SQL enojne/večtabelne poizvedbe odstranijo podvojene zapise

Enotna tabela različna

  1. select distinct 字段 from 表
Kopiraj kodo

Veliko glasov je združenih po

Skupina z mora biti postavljena pred vrstni red od in limit, sicer bo napaka prijavljena

************************************************************************************

1. Poišči podvojene zapise v tabeli, podvojene zapise pa ocenjujemo na podlagi enega polja (peopleId).

Izberi * med ljudmi
kjer peopleId v (izberi peopleId iz skupine peopleId po peopleId z count(peopleId) > 1)

2. Izbrišite podvojene zapise v tabeli, podvojeni zapisi pa se ocenjujejo na podlagi enega samega polja (peopleId), pri čemer ostanejo le zapisi z najmanjšim rowidom
izbrisati iz ljudi
kjer peopleId v (izberi peopleId iz skupine peopleId po peopleId z count(peopleId) > 1)
in rowid ni v (izberi min(rowid) iz skupine ljudi po peopleId ima count(peopleId )>1)

3. Poiščite podvojene zapise (več polj) v tabeli
Izberite * iz vitae a
kjer (a.peopleId,a.seq) v (izberi peopleId,seq iz skupine življenjepisov po peopleId,seq z count(*) > 1)

4. Izbrisati odvečne podvojene zapise (več polj) v tabeli, pri čemer ostanejo le zapisi z najmanjšim rowidom
Delete from Vitae A
kjer (a.peopleId,a.seq) v (izberi peopleId,seq iz skupine življenjepisov po peopleId,seq z count(*) > 1)
in rowid, ki ni v (select min(rowid) iz skupine vitae z peopleId,seq, ki ima count(*)>1)


5. Najdi podvojene zapise (več polj) v tabeli in ne vsebuje zapisov z najmanjšim rowidom
Izberite * iz vitae a
kjer (a.peopleId,a.seq) v (izberi peopleId,seq iz skupine življenjepisov po peopleId,seq z count(*) > 1)
in rowid, ki ni v (select min(rowid) iz skupine vitae z peopleId,seq, ki ima count(*)>1)

(dva)
Na primer
V tabeli A je polje "ime",
In vrednost "imena" je lahko enaka med različnimi zapisi,
Zdaj morate poizvedovati za elemente z podvojenimi vrednostmi "imena" med zapisi v tabeli;
Izberite ime,count(*) iz skupine po imenu z Count(*) > 1

Če je spol tudi enak, je naslednji:
Izberite ime, spol, štetje(*) iz skupine po imenu, spol s številom(*) > 1

(tri)
Metoda 1

declare @max celo število,@id celo število

razglasimo cur_rows lokalni kazalec za izbrano glavno polje, count(*) iz skupine imen tabele po glavnem polju, ki ima count(*) >; 1

Odpri cur_rows

prinesi cur_rows v @id,@max

medtem ko @@fetch_status=0

začetek

select @max = @max -1

Nastavi število vrstic @max

izbriši iz imena tabele, kjer primarno polje = @id

prinesi cur_rows v @id,@max
konec

Close cur_rows

nastavi število vrstic 0

Metoda 2

"Podvojeni zapisi" imajo dva pomena podvojenih zapisov: eden je popolnoma podvojen zapis, torej zapis z vsemi polji podvojenimi, drugi pa je zapis z podvojenimi deli ključnih polj, na primer polje Ime je podvojeno, medtem ko druga polja niso nujno podvojena ali jih je mogoče ignorirati.

1. Za prvo vrsto ponavljanja je razmeroma enostavno rešiti in uporabiti

izberite distinct * from tableName

Rezultat lahko dobite brez podvojenih zapisov.

Če morate izbrisati podvojene zapise (obdržati en podvojeni zapis), jih lahko izbrišete na naslednji način

izberi distinct * v #Tmp iz tableName

tabela za izpustitev tabele Ime

izberite * v tableName iz #Tmp
Drop tabela #Tmp

To podvajanje nastane zaradi slabe zasnove tabele in ga je mogoče rešiti z dodajanjem edinstvenih indeksnih stolpcev.

2. Ta vrsta problema podvajanja običajno zahteva shranjevanje prvega zapisa v podvojenem zapisu, metoda delovanja pa je naslednja

Predpostavimo, da obstajajo podvojena polja Ime in Naslov, in potrebujemo edinstven nabor rezultatov za ti dve polji

izberite identiteto(int,1,1) kot samodejni ID, * v #Tmp iz tableName

izberite min(autoID) kot autoID v #Tmp2 iz #Tmp skupine po Name,autoID

izberite * iz #Tmp, kjer je samodejna identifikacija (izberite samodejno identifikacijo iz #tmp2)

Zadnja izbira dobi niz rezultatov Ime in Naslov, ki se ne ponavljata (vendar obstaja dodatno polje autoID, ki ga je mogoče zapisati v klavzulo za izbiro med pisanjem)

(4)
Poizvedbe so podvojene

Izberite * iz TableName kjer je id v (Izberite ID iz TableName

Skupina po ID

ima count(id) > 1

)

3. Poiščite podvojene zapise (več polj) v tabeli
Izberite * iz vitae a
kjer (a.peopleId,a.seq) v (izberi peopleId,seq iz skupine življenjepisov po peopleId,seq z count(*) > 1)

Tek povzroča težave, pisanje in pošiljanje kot je (a.peopleId, a.seq) pa ne bo delovalo!!






Prejšnji:SQL ustvarja shranjene postopke s parametri
Naslednji:EPUBReader bralnik, nujen za odpiranje EPUB datotek
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com