2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
PostgreSQL:ssä tietojen duplikointi on yleinen ja tärkeä tehtävä. Deduplikaatiota voidaan soveltaa yksinkertaisiin tietotyyppeihin tai monimutkaisiin tietorakenteisiin. Tässä oppaassa tutkitaan yksityiskohtaisesti, kuinka tietojen duplikointi voidaan toteuttaa PostgreSQL:ssä, ja tarjotaan ratkaisuja ja erityisiä esimerkkikoodeja eri tilanteisiin.
Perustietotyypeille, kuten kokonaisluvuille, merkkijonoille jne., voit käyttää DISTINCT
Avainsanat päällekkäisyyden poistamiseksi.
SELECT DISTINCT column_name
FROM your_table;
Oletetaan esimerkiksi, että on tiedosto nimeltä students
taulukko, joka sisältääname
Sarake (merkkijonotyyppi), saadaksesi yksilölliset oppilaiden nimet, voit kirjoittaa näin:
SELECT DISTINCT name
FROM students;
selittää: DISTINCT
Avainsana varmistaa, että palautettu tulosjoukko ei sisällä päällekkäisiä rivejä.
Jos sinun on poistettava kopiointi useiden sarakkeiden perusteella, voit tehdä sen DISTINCT
Määritä avainsanan jälkeen useita sarakkeita.
SELECT DISTINCT column1, column2
FROM your_table;
Esimerkiksi varten orders
taulukko, joka sisältääcustomer_id
japroduct_id
Kaksi saraketta ainutlaatuisten asiakas- ja tuoteyhdistelmien saamiseksi:
SELECT DISTINCT customer_id, product_id
FROM orders;
Selitys: Yllä oleva kysely palauttaa eri customer_id
japroduct_id
yhdistelmä.
Käsiteltäessä tietoja, jotka sisältävät monimutkaisia tietorakenteita, kuten taulukoita ja rakenteita, duplikointimenetelmät ovat erilaisia.
PostgreSQL tarjoaa toimintoja taulukoiden duplikoinnin poistamiseen.
SELECT ARRAY(SELECT DISTINCT unnest(array_column)) AS distinct_array
FROM your_table;
Oletetaan, että siellä on pöytä users
, jossa on sarakehobbies
Se on kokonaislukutaulukko Jokaisen käyttäjän eri harrastustaulukoiden saamiseksi:
SELECT ARRAY(SELECT DISTINCT unnest(hobbies)) AS distinct_hobbies
FROM users;
Selitys: Ensimmäinen käyttökerta unnest
Funktio laajentaa taulukon riveiksi ja ottaa sitten käyttöönDISTINCT
Suorita duplikointi ja lopuksi käytäARRAY
Funktio kokoaa duplikoidut tulokset uudelleen taulukkoon.
Jos tiedot on tallennettu JSON
Tyyppisarake voidaan poimiaJSON
Arvot on poistettu.
SELECT DISTINCT json_extract_path_text(json_column, 'key') AS distinct_value
FROM your_table;
Esimerkiksi tiedostolle nimeltä employee_details
taulukko, jossa on ajson
Listainfo
,Sisältääsalary
Avainarvoparit erilaisten palkkaarvojen saamiseksi:
SELECT DISTINCT json_extract_path_text(info, 'alary') AS distinct_salary
FROM employee_details;
selittää: json_extract_path_text
-toimintoa käytetään hakemiseenJSON
Pura määritetyn avaimen arvo tiedoista ja poista puretun arvon kopiot.
Mukautetuissa rakennetyypeissä voit purkaa rakenteen kentät yhteisen duplikoinnin poistamista varten.
Oletetaan, että rakenteen tyyppi on määritelty address_type
,Sisältäästreet
jacity
Kaksi kenttää, pöytäcontacts
Siinä on sarakeaddress
Jooaddress_type
tyyppi.
SELECT DISTINCT address.street, address.city
FROM contacts;
Selitys: Suorita päällekkäisyyden poistotoiminnot suoraan rakenteen kenttiin.
GROUP BY
Suorita päällekkäisyyden poistaminenGROUP BY
Lauseella voidaan myös saavuttaa deduplikoinnin vaikutus, varsinkin kun datalle on tarpeen suorittaa aggregointilaskelmia ja deduplikointi samanaikaisesti.
SELECT column_name
FROM your_table
GROUP BY column_name;
Esimerkiksi saada students
Eri luokat taulukossa:
SELECT class
FROM students
GROUP BY class;
selittää: GROUP BY
Rivit, joilla on sama arvo, ryhmitellään yhteen, jolloin saadaan aikaan päällekkäisyyden poistamisen vaikutus.
Kun data voi sisältää nolla-arvoja, duplikoinnin poistaminen vaatii erityistä huomiota. DISTINCT
tahtoaNULL
arvoja käsitellään erillisinä arvoina.Jos haluatNULL
Arvojen katsotaan olevan samoja duplikoinnin poistamiseksi.
SELECT COALESCE(column_name, 'default_value')
FROM your_table
GROUP BY COALESCE(column_name, 'default_value');
Esimerkiksi varten product_prices
pöydässäprice
sarakkeita (voi sisältääNULL
arvo), toNULL
Arvoja käsitellään identtisinä duplikoinnin poistamiseksi:
SELECT COALESCE(price, 0)
FROM product_prices
GROUP BY COALESCE(price, 0);
selittää: COALESCE
toimintoa käytetään käsittelemäänNULL
arvo, korvaa se määritetyllä oletusarvolla ja suorita sitten ryhmittely ja kopiointi korvatun tuloksen perusteella.
Kun suoritat tietojen duplikointitoimintoja, datamäärä ja suorituskyky on otettava huomioon. Suurille tietojoukoille indeksien käyttö voi parantaa päällekkäisyyden poistotoimintojen suorituskykyä.
Jos suoritat usein tietyn sarakkeen päällekkäisyyden poistotoimintoja, voit luoda indeksin kyseiselle sarakkeelle.
CREATE INDEX index_name ON your_table (column_name);
Lisäksi sopivan duplikointimenetelmän valitseminen voi myös vaikuttaa suorituskykyyn.Jos esimerkiksi datamäärä on suuri ja sinun on hankittava vain yksilöllisten arvojen määrä todellisten yksilöllisten arvojen sijaan, käytäCOUNT(DISTINCT)
Todennäköisesti parempi kuin käyttää sitä suoraanDISTINCT
Tehokkaampi.
Oletetaan, että on a sales
taulukko, joka sisältääcustomer_id
(kokonaislukutyyppi),product_name
(merkkijonotyyppi) jasale_amount
(liukulukutyyppi) -sarake.
Saat luettelon eri asiakkaiden ostamista tuotteista käyttämällä seuraavaa kyselyä:
SELECT DISTINCT customer_id, product_name
FROM sales;
Jos haluat saada kunkin asiakkaan kokonaismyynnin ja saavuttaa asiakkaiden päällekkäisyyden samanaikaisesti, voit kirjoittaa näin:
SELECT customer_id, SUM(sale_amount) AS total_sales
FROM sales
GROUP BY customer_id;
hypoteesi sales
pöydässäproduct_name
Sarakkeet voivat sisältää nolla-arvoja. Voit käsitellä nolla-arvoja samoina duplikoinnin yhteydessä:
SELECT COALESCE(product_name, 'Unknown Product')
FROM sales
GROUP BY COALESCE(product_name, 'Unknown Product');
jos sales
Taulukon datamäärä on erittäin suuri, ja se usein perustuucustomer_id
Jos haluat poistaa sarakkeen päällekkäisyyden, voit luoda sarakkeelle indeksin:
CREATE INDEX sales_customer_id_index ON sales (customer_id);
Tietojen duplikoinnin toteuttaminen PostgreSQL:ssä edellyttää sopivan menetelmän valitsemista tietotyypin ja erityisten liiketoimintavaatimusten perusteella.Perustietotyyppejä voidaan käyttääDISTINCT
avainsana monimutkaisille tietorakenteille, kuten taulukoille,JSON
ja mukautettuja rakenteita, jotka on ehkä yhdistettävä tiettyihin toimintoihin ja toimintoihin päällekkäisyyden poistamiseksi. Samalla on tärkeää ottaa huomioon suorituskykytekijät, luoda järkevästi indeksejä ja valita optimaalinen duplikointistrategia. Yllä olevien esimerkkien ja selitysten avulla toivomme voivamme auttaa sinua suorittamaan tehokkaasti tietojen duplikointitoimintoja PostgreSQL:ssä vastaamaan erilaisiin liiketoimintatarpeisiin.
🎉相关推荐