webForumDet fria alternativet

Hjälp med att rensa i tabell

Databaser & SQL

5 svar · 550 visningar · startad av Php

Medlem sedan sep. 2001224 inlägg
Frågan#1

Tjena,
Det är så att jag har en tabell med två kolumner, id1 och id2. Jag vill att dessa två ska innehålla unika värden.
Jag behöver därför hjälp nu att ta bort rader där värdet i den ena kolumnen redan existerar i den andra.

Jag letar alltså efter en lösning för att SQL ska leta igenom alla rader i kolumn "id2" och kolla om värdet i posten redan finns i "id1", isåfall ska den radera den posten.

Vet inte riktigt hur jag ska förklara, men jag hoppas att ni förstår vad jag menar.

Medlem sedan dec. 200012 464 inlägg
#2

Ge exempel, t.ex.

Om du har följande data

id1 | id2
--------
1 1

vad skall hända då?

Och detta fall

d1 | id2
--------
1 2
2 3

Medlem sedan sep. 2001224 inlägg
#3

id1 | id2
---------
1 1
1 1 // Denna rad ska tas bort

20 50
50 20 // Denna rad ska tas bort

Medlem sedan dec. 200012 464 inlägg
#4
d1 | id2
---------
1 1
1 1 // Denna rad ska tas bort

Det går inte lösa med hjälp av en delete om du inte har någon annan unik kolumn.

Det jag undrade var när du har enbart en rad där id1 = id2

fall2:

delete from t 
 where id2 in (select id1 from t) 
    and id1 <> id2
Medlem sedan sep. 2001224 inlägg
#5

Får detta felmeddelande:

#1093 - You can't specify target table 'friends' for update in FROM clause

Angående unik kolumn vet jag inte riktigt vad du menar, men jag har även en kolumn i i tabellen som heter "id".

Medlem sedan sep. 2001224 inlägg
#6

Ingen som har något förslag på hur jag kan lösa detta? :l

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)