Select insert

kbit

Erfahrenes Mitglied
Hi ich wollte mit mit insert select datensätze kopieren. Nun stehen aber in der videos tabelle doppelte einträge für die url. Nun wollte ich aber keine doppelten einträge in der videotests speichern. Wenn ich ein distinct mache wäre der ja für alle felder. Wie kann ich denn nur verhindern das die doppelten einträge von der url rüber kopiert werden ?

Code:
insert into videostest (vid,userid,id,url) Select vid,userid,id,url from videos where videostatus=4 limit 100;
 
Code:
insert into videostest (vid,userid,id,url) 
Select vid,userid,id,url from videos 
where videostatus=4 and count(url) = 1 limit 100;

vieleicht so?
 
Zeig mal Beispieleinträge und wenn eine URL doppelt ist welcher Eintrag denn übernommen werden soll.
 
Hi
SQL:
insert into videostest (vid,userid,id,url)
 Select vid,userid,id,url from videos 
where videostatus=4 
group by url
limit 100;


Dir muss dabei aber klar sein, dass wenn du ihrgendwo eine identische url hast er dann nur die vid, userid und id eines der Datensätze nimmt (wahrscheindlich dessen mit dem niedrigerem primary-key, bin dabei aber nicht sicher)

Gruss
 
Zuletzt bearbeitet von einem Moderator:
Also sagen wir vid=1 userid=22 id=2 url=images/test.jpg

Ich möchte das beim rüber kopieren wenn die url noch einmal bei einem anderen user vorkommt nicht mit rüber kopiert wird. D.h keine vid, userid id und url. Ich möchte nachher nur noch das die url einmal vorkommt. Mir geht es da darum, weil ich später aus der Tabelle die Bilder verkleiner und da wollte ich nicht doppelte einträge doppelt verkleiner. Kostet nur rechen Zeit
 
Einfach die Spalten beim Select weglassen, die du nicht brauchst und dann ein kompletter Distinct drauf.

Wenn du die UserId nur eines Users kopieren willst, kannst du's auch gleich sein lassen,
wieso solltest du es dir schwerer machen, als notwendig?
 
Zurück