Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Leta efter dubbletter om man kör en insert.

Postades av 2003-07-03 08:14:28 - Henrik Suominen, i forum databaser, Tråden har 8 Kommentarer och lästs av 831 personer

Jag ska köra en update på en tabell som sätter in mellanslag före dom posterna som har mindre än fem tecken. Detta är redan fixat. Men när jag kör denna uppkommer det ett antal dubletter. Jag vet inte vilka och hur många det är.

Men om man kan köra ovanstående på en post kasta in svaret i en temporär post och jämför detta med alla andra. Sen loopar man sig ner genom tabellen. Det borde fungera (om man kan koden..)


Svara

Sv: Leta efter dubbletter om man kör en insert.

Postades av 2003-07-03 08:50:20 - Christoffer Hedgate

Vill du alltså ta bort alla rader där värdet i en viss kolumn är en dublett av värdet i samma kolumn på någon annan rad? Isf är här ett exempel som du kan använda om du har en numerisk nyckel:

<code>
DELETE FROM foo
WHERE keycolumn IN (
SELECT keycolumn
FROM foo x
WHERE keycolumn > (SELECT MIN(keycolumn) FROM foo WHERE duplicatecolumn = x.duplicatecolumn)
)
</code>


Svara

Sv: Leta efter dubbletter om man kör en insert.

Postades av 2003-07-03 09:17:35 - Andreas Hillqvist

Så här plockar du ut dubletterna och hur många dubletter det är:
SELECT KolumnNamn, Count(*) As Antal
FROM TabellNamn
GROUP BY KolumnNamn
HAVING Count(*) > 1


Svara

Sv: Leta efter dubbletter om man kör en insert.

Postades av 2003-07-03 10:20:07 - Henrik Suominen

Om jag kör nedanstående kod på några rader tex:
_xxxx (_ är lika med mellanslag)
xxxx

skapas det dubletter (xxxx blir _xxxx)

Jag vill ta reda på vilka dubbletterna blir. Om man kan spoola ut resultatet till en txtfil är det önskvärt.

kod start
--------------------------------------------------------------------------------------------------
update pr_symbs
set typ = lpad(substr(typ,1,instr(typ,'.',1)),6) || substr(typ,instr(typ,'.',1)+1)
where length(substr(typ,1,instr(typ,'.',1))) < 6 and typ like '%.%'
/

update pr_symbs
set a = lpad(a,5)
where length(a) < 5 and a not like '%.%' and a not like '%,%'
/
--------------------------------------------------------------------------------------------------
kod slut


Svara

Sv: Leta efter dubbletter om man kör en insert.

Postades av 2003-07-03 10:56:29 - Christoffer Hedgate

Andreas visade ju hur du tar reda på vilka dubletter det finns. Dock undrar jag, det måste ju ha funnits dubletter även innan du uppdaterar? Om XXXX blir _XXXX och det då finns flera _XXXX måste det ju ha funnits flera XXXX innan? Iofs, visst, det kan ha funnits en XXXX och en _XXXX och då får du ju förstås två _XXXX. Hur du spolar ut till textfil är jag inte helt säker på, antar att det är Oracle du använder. Men du kan väl iaf bara helt enkelt köra en fråga enligt Andreas modell i SQLPlus och helt enkelt pipa ut resultatet till en textfil?


Svara

Sv: Leta efter dubbletter om man kör en insert.

Postades av 2003-07-03 13:37:49 - Henrik Suominen

Det är det senare exemplet som jag är ute efter

"Iofs, visst, det kan ha funnits en XXXX och en _XXXX och då får du ju förstås två _XXXX. "

Kör jag enligt andreas modell fungerar det på dubletter som redan finns men inte på "nästan"-dubletter. Testade och det fungerade inte.

SELECT u, Count(u) As Antal
FROM PR_symbs
where u like '%0554%'
GROUP BY u
HAVING Count(u) > 1

Kör jag denna får jag inte fram något..

Men om jag däremot kör

SELECT u, Count(u) As Antal
FROM PR_symbs
where u like '%0554%'
GROUP BY u
HAVING Count(u) = 1

Får jag fram två poster. En med mellanslag och en utan...

//Henrik


Svara

Sv: Leta efter dubbletter om man kör en insert.

Postades av 2003-07-03 13:55:12 - Emma Magnusson

Så du menar att du vill ha en fråga som identifierar de dubbletter som kommer att
uppstå efter din update-sats? så att du kan åtgärda problemet innan det hinner
uppstå?

Du borde kunna lägga in en kontroll mha av inner join - och jämföra alla rader i
databasen med varandra och lägga till det fixa antal mellanslag din update skulle göra
till det nuvarande värdet i jämförelsen.

/Emma


Svara

Sv: Leta efter dubbletter om man kör en insert.

Postades av 2003-07-03 14:01:46 - Christoffer Hedgate

SELECT LTRIM(u), Count(u) As Antal
FROM PR_symbs
where u like '%0554%'
GROUP BY LTRIM(u)
HAVING Count(u) > 1


Svara

Sv: Leta efter dubbletter om man kör en insert.

Postades av 2003-07-03 14:05:12 - Henrik Suominen

Nu fungerar det.


SELECT LTRIM(u), Count(u) As Antal
FROM PR_symbs
where u like '%0554%'
GROUP BY LTRIM(u)
HAVING Count(u) > 1


Det är så enkelt när man kan det....

Tack för hjälpen Christoffer


Svara

Nyligen

  • 13:18 Website builder
  • 17:03 Getmancar your go-to carsharing
  • 14:07 Games
  • 17:54 Vegastars New Zealand
  • 16:56 Verde Casino Danmark
  • 13:54 Vegastars: Top Australian Online C
  • 21:28 Chicken Road Casino Game
  • 21:21 1xBet Promo Code 2025

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 571 440
27 965
271 786
1 064
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies