Työhaastattelussa: sinulla on kaksi samanlaista tietokantaa. Toisesta poistetaan rivi. Miten saat selville, mikä rivi poistettiin?
Vastasin, että laitan tietokannat vierekkäisiin ikkunoihin ja alan rivi riviltä vertailla. Onko tämä oikea vastaus? Panostahan siinä aikanaan tulee sen kohdalle, jota ei toisesta löydy!
Kommentit (70)
Vierailija kirjoitti:
Vierailija kirjoitti:
Miksi hakisin tuollaista suorittavan työn paikkaa?
Haiskahtaa suojatyöpaikassa istuvalta kunnan elätiltä.
Yksityisissä yrityksissä ei tehdäkään oikeita töitä.
Vierailija kirjoitti:
Antaisin ChatGPT:n tehdä homman.
Onpas tietoturva hyvässä kunnossa, jos chatgpt pääsisi tietokantaan käsiksi.
Vierailija kirjoitti:
Vastauksesi osoittaa loogista ajattelua, mutta työhaastattelutilanteessa odotetaan usein tehokkaampaa, teknisesti optimoitua ratkaisua varsinkin jos haet tekniseen tai IT-alan tehtävään.
Mikä olisi parempi vastaus?
Riippuen tietokannan koosta ja käytössä olevista työkaluista, tehokkaampi tapa olisi:
1. SQL-kyselyllä erot
Jos kyseessä on relaatiotietokanta (esim. PostgreSQL, MySQL), voit tehdä EXCEPT-operaation (tai vastaavan) kahden taulun välillä:
sql
CopyEdit
SELECT * FROM tietokanta1.taulu EXCEPT SELECT * FROM tietokanta2.taulu;
Tämä palauttaa rivit, jotka ovat vain ensimmäisessä tietokannassa, eli poistettu rivi.
Joissain tietokannoissa (esim. MySQL) EXCEPT ei ole suoraan tuettu, mutta voit käyttää LEFT JOINia ja IS NULL -ehtoa:
sql
CopyEdit
SELECT a.* FROM tietokanta1.tau
Tämä tekoälyn tekemä vastaus on 1000 kertaa parempi kuin AP:n ja siksi robotit tuleekin viemään armotta tuollaisten osaamattomien näyttelijöiden työt.
Googlaa Susanna Penttilä & only fans
Vierailija kirjoitti:
Vierailija kirjoitti:
Mutta jos kysymys on kahdesta taulusta, niin ratkaisu on helppo:
SELECT *
Except on myös hyvä, Except on myös hyvä, ehkä tehokkaampikin.Except on myös hyvä, ehkä tehokkaampikin.ehkä tehokkaampikin.FROM Taulu1 WHERE avainsarake NOT IN
(SELECT avainsarake
FROM Taulu2);
Except on myös hyvä, ehkä tehokkaampikin.
Except tuottaa saman vastauksen, mutta on tuskin yllä annettua kyselyä tehokkaampi, koska siinä pitää verrata koko rivejä pelkän avainattribuutin sijaan.
Kysästin DeepSeek-tekoälyltä samaa:
"Hei kiinan ihme, minulla on tehtävä pieni SQL lause, voitko auttaa. On kaksi tietokantaa, TKa ja siitä tehty kopio TKb. Molemmat sisältävät 31 taulukkoa, joista yksi on nimeltään TaulVelat. Nyt joku on poistanut yhden tietuerivin TKb-tietokannan TaulVelat-taulukosta. Tee SQL-lause, jossa verrataan näiden kahden taulukon tietueet ja tulostetaan tietue, joka toisesta puuttuu."
Tässä on SQL-lause, joka vertaa TaulVelat-taulukkoa kahdessa tietokannassa (TKa ja TKb) ja löytää ne rivit, jotka puuttuvat TKb:stä:
sql
SELECT TKa.* FROM TKa.dbo.TaulVelat AS TKa WHERE NOT EXISTS ( SELECT 1 FROM TKb.dbo.TaulVelat AS TKb WHERE -- Oletetaan, että jokin yhdistävä sarake (esim. ID) on olemassa -- Jos taulussa on primääriavain, käytä sitä TKa.ID = TKb.ID -- Jos ei ole yksittäistä avainta, voit joutua vertaamaan useita sarakkeita: -- TKa.sarake1 = TKb.sarake1 AND -- TKa.sarake2 = TKb.sarake2 AND -- ... );
Huomioita:
-Korvaa ID taulun todellisella yksilöllisellä tunnisteella (primääriavaimella).
-Jos taulussa ei ole yksittäistä avainta, sinun on ehkä verrattava useita sarakkeita varmistaaksesi, että löydät täsmälleen oikean rivin.
-Syntaksi voi vaihdella hieman käyttämäsi tietokantajärjestelmän mukaan (esim. SQL Server, MySQL, Oracle).
-Jos haluat löytää myös rivit, jotka ovat TKb:ssä mutta eivät TKa:ssa, voit käyttää FULL OUTER JOIN -operaatiota.
-Tietokantojen nimeäminen (TKa.dbo.TaulVelat) riippuu tietokantajärjestelmästäsi. Esimerkiksi SQL Serverissä dbo on oletusskeema.
Vierailija kirjoitti:
Kysästin DeepSeek-tekoälyltä samaa:
"Hei kiinan ihme, minulla on tehtävä pieni SQL lause, voitko auttaa. On kaksi tietokantaa, TKa ja siitä tehty kopio TKb. Molemmat sisältävät 31 taulukkoa, joista yksi on nimeltään TaulVelat. Nyt joku on poistanut yhden tietuerivin TKb-tietokannan TaulVelat-taulukosta. Tee SQL-lause, jossa verrataan näiden kahden taulukon tietueet ja tulostetaan tietue, joka toisesta ...
Liian täydellinen. Mutta on tosi että tämmmöiset työt ovat tehokkaat firmat tän vuoden loppuun mennessä laittaneet tekoälyn hoidettavaksi. VÄkeä pistetään kilsatehtaalle nyt kovaa vauhtia. Jos teet töitä tietokoneella päivittäin, työpaikkasi on vaarassa!
Eikö vaan voisi vertailla tietokantojen tiedostojen kokoa? Tai katsoa milloin muokattu. Kuulostaa liian monimutkaisilta nuo muut ratkaisut.
Vierailija kirjoitti:
Vierailija kirjoitti:
Antaisin ChatGPT:n tehdä homman.
Onpas tietoturva hyvässä kunnossa, jos chatgpt pääsisi tietokantaan käsiksi.
Hoh hoijaa...
Onko tää se keksinnuolijatyyppi? Missä lie hoitolaitoksessa näitä testejä tehdään?
Vierailija kirjoitti:
Tiputtaisin molemmat tietokannat Word-dokumenteiksi ja sitten käyttäisin Vertaa asiakirjoja -toimintoa.
🤣
Oikea vastaus: mitä vidun väliä sillä on, jos joku rivi puuttuu? Kaikkeen aikuiset ihmiset tuhlaavat aikaansa. Pitäisi kysyä siltä idiootilta joka sen rivin hukkasi. Jos sillä nyt on jotain merkitystä.
Vierailija kirjoitti:
Oikea vastaus: mitä vidun väliä sillä on, jos joku rivi puuttuu? Kaikkeen aikuiset ihmiset tuhlaavat aikaansa. Pitäisi kysyä siltä idiootilta joka sen rivin hukkasi. Jos sillä nyt on jotain merkitystä.
Sinunlaistesi takia suomi vajoaa kehitysmaaksi. Tuollainen moraalittomuus on anteeksiantamatonta. Oliko kasvatuksesi täysi nolla, vastuunpakoilua ja toisten syyttelyä aina ja joka paikassa? Suututtaa sun laises tyypit, onneksi luonnon valinta karsii tuollaisia melko tehokkaasti.
Kysymys on kompa. Oikea vastaus on että refaktoroidaan hemmettiin se 90 lukulainen SQL kanta ja korvataan se cloudnatiivissa kuberneteksessä pyörivällä nosql storagella. Jos dataa häviää migraatiossa tai suorituskyky tökkii niin ei väliä koska agile ja migraation tehnyt konsulttikin vaihtoi jo firmaa ja oma cio on muutenkin kolmatta viikkoa Barcelonassa gartnerin symposiumissa ja jatkaa sieltä suoraan dreamforceen. Ens viikolla saadaan uudet puhelimet kun iPhone 16pro on jo puoli vuotta vanha.
Vierailija kirjoitti:
Kysästin DeepSeek-tekoälyltä samaa:
"Hei kiinan ihme, minulla on tehtävä pieni SQL lause, voitko auttaa. On kaksi tietokantaa, TKa ja siitä tehty kopio TKb.
voi fiddy aikoinaan 90-luvun .sfnet ryhmissä aidot koodarit vertailivat itse kirjoittamiaan algoritmejä ja väittelivät niiden paremmuudesta.
Nyt nimimerkit vertailevat kenen käyttämä AI tuottaa hienoimman näköistä scheibaa
Eli aijotte poistaa jonkun tietokannasta tiedostoja siten ettei se huomais selvittämällä mistä se vois asian tarkistaa? En mene noin helppoon huijjaukseen.
Syötinpä tuon eurooppalaiselle Mistral-tekoälylle ja sieltä tuli ihan järkevää vastausta sieltäkin, ymmärrettävyydessään ehkä selkein:
"minulla on tehtävä pieni SQL lause, voitko auttaa. On kaksi tietokantaa, TKa ja siitä tehty kopio TKb. Molemmat sisältävät 31 taulukkoa, joista yksi on nimeltään TaulVelat. Nyt joku on poistanut yhden tietuerivin TKb-tietokannan TaulVelat-taulukosta. Tee SQL-lause, jossa verrataan näiden kahden taulukon tietueet ja tulostetaan tietue, joka toisesta puuttuu."
Voit käyttää SQL-lauseketta, joka vertaa tietueita kahdesta taulukosta ja tulostaa ne tietueet, jotka puuttuvat toisesta taulukosta. Oletetaan, että taulukoissa TaulVelat on jokin yksilöivä sarake, esimerkiksi id, jonka avulla tietueita voidaan verrata.
Alla on esimerkki SQL-lausekkeesta, joka tekee tämän:
SELECT TKa.TaulVelat.* FROM TKa.TaulVelat LEFT JOIN TKb.TaulVelat ON TKa.TaulVelat.id = TKb.TaulVelat.id WHERE TKb.TaulVelat.id IS NULL;
Tässä lausekkeessa:
LEFT JOIN yhdistää taulukot TKa.TaulVelat ja TKb.TaulVelat id-sarakkeen perusteella.
WHERE TKb.TaulVelat.id IS NULL valitsee ne rivit, joissa TKb.TaulVelat-taulukossa ei ole vastaavaa id-arvoa, eli ne rivit, jotka puuttuvat TKb.TaulVelat-taulukosta.
Jos id ei ole yksilöivä sarake tai jos haluat verrata useampaa saraketta, voit muuttaa ON-ehdon vastaamaan tarpeitasi.
Haiskahtaa suojatyöpaikassa istuvalta kunnan elätiltä.