Avatar billede jakobsen Nybegynder
08. april 2005 - 09:19 Der er 18 kommentarer og
1 løsning

delete from

hejsa,

nogle der har en idé om hvorfor jeg ikke kan køre dette:

DELETE FROM table1 WHERE table1.id <> table2.id
Avatar billede michael_stim Ekspert
08. april 2005 - 09:22 #1
DELETE FROM table1, table2 WHERE table1.id <> table2.id
Avatar billede michael_stim Ekspert
08. april 2005 - 09:23 #2
Wrong, vent lidt!!!!
Avatar billede michael_stim Ekspert
08. april 2005 - 09:24 #3
Hvilken fejl for du?
Avatar billede arne_v Ekspert
08. april 2005 - 09:34 #4
Hvor kommer table2 fra ?
Avatar billede fennec Nybegynder
08. april 2005 - 09:34 #5
Hvad er det du vil slette???
Avatar billede arne_v Ekspert
08. april 2005 - 09:35 #6
Er det noget:

DELETE FROM tabel1 WHERE id NOT IN (SELECET id FROM tabel2)

du leder efter (kræver MySQL 4.1 eller nyere) ?
Avatar billede jakobsen Nybegynder
08. april 2005 - 09:44 #7
giver:
You have an error in your SQL syntax near 'id FROM tabel2)' at line 2

(det skal siges at id=er noget tekst)
Avatar billede jakobsen Nybegynder
08. april 2005 - 09:45 #8
jeg vil slette en linie i tabel1 hvis dens id ikke findes i tabel2
Avatar billede jakobsen Nybegynder
08. april 2005 - 09:48 #9
har mysql 3.23.58-1
Avatar billede busschou Praktikant
08. april 2005 - 09:48 #10
DELETE FROM tabel1 WHERE id NOT IN (SELECET id FROM tabel2)
skal vel være
DELETE FROM tabel1 WHERE id NOT IN (SELECT id FROM tabel2)
Avatar billede jakobsen Nybegynder
08. april 2005 - 10:01 #11
giver samme fejl
Avatar billede bromer Nybegynder
08. april 2005 - 10:04 #12
Se hvad arne skrev 09:35:34. Du kan ikke udføre den query med mindre du har MySQL 4.1 eller højere.

For at vende tilbage til hvad du startede med at skrive, så kan du ikke slette fra en tabel, hvis du samtidig laver et join. MySQL kan ikke finde ud af hvilken tabel du vil slette fra.
Avatar billede jakobsen Nybegynder
08. april 2005 - 10:05 #13
ok. jeg skrev nu jeg havde "mysql 3.23.58-1"

hvilke løsning kan der så bruges?
Avatar billede bromer Nybegynder
08. april 2005 - 10:08 #14
jakobsen: Jeg ved at du skrev det, det var også derfro jeg gjorde dig opmærksom på at du ikke skulle bruge mere tid på den query.

Du bliver nød til at lægge en query der heneter alle id'erne et niveau ud. Kører du et scriptsprog, der kalder SQL?
Avatar billede busschou Praktikant
08. april 2005 - 10:09 #15
du kan jo hive alle id ud i den ene tabel
Så lave en løkke i den anden som sletter alle dem som er forskellige
Avatar billede jakobsen Nybegynder
08. april 2005 - 10:16 #16
bruger php..

jeg var lige ved at prøve sådan noget her, men det heller ik helt optimalt

$result = mysql_query("SELECT id FROM tabel1");
while ($row = mysql_fetch_array($result)) {

$tabel1id = $row[id];

$sql = mysql_query("SELECT id FROM tabel2 WHERE id='$tabel1id'");

if (!mysql_num_rows($sql)) {

.........
Avatar billede bromer Nybegynder
08. april 2005 - 10:18 #17
hvad med:

<?
$rs = mysql_query("select id from tabel2");
$ids = array();
while($row = mysql_fetch_row($rs)) {
array_push($ids,$row[0]);
}

mysql_query("DELETE FROM tabel1 WHERE id NOT IN (" . implode(",",$ids) . "));
Avatar billede jakobsen Nybegynder
08. april 2005 - 15:02 #18
har fundet et svar med et array, hvis du laver et svar, får du lige point
Avatar billede bromer Nybegynder
08. april 2005 - 15:12 #19
super
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