|
| MySQL: sletning af rækker Fra : Daniel Jacobsen |
Dato : 09-11-02 05:57 |
|
Hejsa!
Jeg bruger nu MySQL version 4-et-eller-andet, som kan slette rækker fra
flere tabeller samtidig og ved DELETE lave opslag i flere tabeller.
Det jeg gerne vil er, at slette nogle rækker fra én tabel, som IKKE findes i
en anden tabel - som følge:
DELETE FROM Event USING Event AS E, Contains AS C WHERE C.time != E.time;
Om der står != , <> eller = er ligemeget, ALLE rækker fra Event bliver
slettet :(
Hvordan får jeg det her til at virke???
Mvh. Daniel J.
| |
Lars Kongshøj (09-11-2002)
| Kommentar Fra : Lars Kongshøj |
Dato : 09-11-02 10:46 |
|
Daniel Jacobsen wrote:
> Jeg bruger nu MySQL version 4-et-eller-andet, som kan slette rækker fra
> flere tabeller samtidig og ved DELETE lave opslag i flere tabeller.
> Det jeg gerne vil er, at slette nogle rækker fra én tabel, som IKKE findes i
> en anden tabel - som følge:
> DELETE FROM Event USING Event AS E, Contains AS C WHERE C.time != E.time;
> Om der står != , <> eller = er ligemeget, ALLE rækker fra Event bliver
> slettet :(
Klart. For enhver række i E vil der nok findes en række i C med en anden
værdi af time.
> Hvordan får jeg det her til at virke???
MySQL implementerer vist ikke "where not exists". Det kan være, at der
er nogle MySQL-hajer, der har en ide til hvordan det bedst kan
omskrives.
En måde kunne være at lave et ekstra felt i E, som angiver om om værdien
af time findes i C. Så kan du starte med at sætte det til 0, lave en
update til 1, hvor værdien findes i C, og derefter fyre en delete af.
--
Lars Kongshøj
| |
Daniel Jacobsen (09-11-2002)
| Kommentar Fra : Daniel Jacobsen |
Dato : 09-11-02 22:10 |
|
Jeg fik fra andet sted følgende løsning:
DELETE FROM Event USING Event LEFT JOIN Contains ON Event.time=Contains.time
WHERE Contains.time IS NUL
Og det virker :)
Mvh. Daniel J.
| |
Kim Schulz (09-11-2002)
| Kommentar Fra : Kim Schulz |
Dato : 09-11-02 13:10 |
|
On Sat, 9 Nov 2002 13:09:48 -0800
"Daniel Jacobsen" <dj@g-a-f.dk> wrote:
> Jeg fik fra andet sted følgende løsning:
>
> DELETE FROM Event USING Event LEFT JOIN Contains ON
> Event.time=Contains.time WHERE Contains.time IS NUL
>
> Og det virker :)
burdte der ikke stå NULL i stedet for NUL ?
| |
|
|