Avatar billede conrad Nybegynder
17. maj 2006 - 08:00 Der er 5 kommentarer og
1 løsning

Sikre at SELECT i forbindelse med UPDATE kun giver 1 row

Hej
Jeg skal sikre mig at min select som bruges til en update kun returnerer 1 row (på SQL bruger jeg TOP 1). Jeg har følgende:

(SELECT * FROM ( mit inderste select
                  SELECT felt
                  FROM    tabel)
                          WHERE rownum < 2)

Er det korrekt ? Jeg har set nogle eksempler hvor der er en ORDER By i den inderste select men det har jeg ikke brug for, så måske det kunne skrives anderledes ?
Avatar billede jps6kb Novice
17. maj 2006 - 08:24 #1
TOP 1 er rigtig nok.

(SELECT TOP 1 * From tabel WHERE rownum < 2 ORDER BY id)
Avatar billede conrad Nybegynder
17. maj 2006 - 08:56 #2
TOP findes da ikke i Oracle??
Avatar billede pgroen Nybegynder
17. maj 2006 - 09:52 #3
I princippet kan du godt nøjes med

SELECT felt FROM tabel WHERE rownum < 2;

- men hvis du ikke bruger en ORDER BY, ved du heller ikke hvilken record du får fat i, og dermed får opdateret...

Og nej, der er ikke noget der hedder TOP i Oracle.
Avatar billede conrad Nybegynder
17. maj 2006 - 16:14 #4
pgroen lægger du et svar ?
Avatar billede steber Nybegynder
17. maj 2006 - 19:59 #5
I stedet for "TOP" kan du vælge at bruge RANK i din sub select, men den vil nok være for avanceret/bøvlet i dette tilfælde.
Derfor vil jeg foreslå det som du selv skriver:
(SELECT *
  FROM (SELECT felt
          FROM tabel
          ORDER BY ...)
  WHERE rownum < 2)
Jeg regner med at du har styr på hvilken række der sorteres øverst i ORDER BY så du får opdateret med det rigtige.
Avatar billede pgroen Nybegynder
18. maj 2006 - 10:18 #6
Jøps!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester