[MySQL] Kopiranje iz tabele v tabelo

Rabim sql stavek, s katerim bi lahko skopiral več polj iz ene tabele v drugo, ampak se ta ne smejo podvajati. Torej z DISTINCT mi deluje samo pri enem polju, pri dveh pa ne gre več.

tabela 1

id | bcd | cde

1 | 5 | xy
2 | 5 | xy
3 | 9 | tz
4 | 9 | dc

Polji bcd in cde morata iti v tabelo 2, kjer je drugačna struktura, recimo takole:
tabela 2

id | tuv | uvz

Torej bcd gre v tuv polje, cde pa v uvz polje. Pomembno je še, da ne sme biti podvojenih zapisov. Recimo zapisa z id 1 in 2 sta popolnoma identična, zato mora biti v novi tabeli samo en zapis. Zapisa 3 in 4 pa nista identična, ker se cde razlikuje.

Preden zapravim celo dopoldne pri tem, ve kdo kako narediti distinct na dveh poljih?

3 odgovori

Za začetek moj vodič. Namesto distinct pa uporabi GROUPBY polje1, polje2, polje3 oz. če rabiš za vsa polja distinct lahko uporabiš tudi:

GROUP BY CONCAT(polje1, polje2, polje3, polje4).

2

SELECT DISTINCT(CONCAT(bcd, 'nekUniqueString', cde)), bcd, cde FROM tabela1;

Potem pa v zanki vpišeš rezultat v drugo tabelo. 'nekUniqueString' je uporabljen samo zato, da so res vrnjeni vsi različni rezultati - v primeru, da bi imel vnose bcd in cde 11,2 in 1,12 bi brez 'nekUniqueString' za mysql to bil enak rezultat.

EDiT: Ah, me je že Roky - sicer z drugačno rešitvijo - prehitel. =)

EDiT2: Pretestiral in ugotovil, da uniqueStringa ne potrebuješ, deluje tudi brez ...

2

Hvala obema, sem rešil po schtr4jhovi metodi, ki sem jo imel že spisano, pa zaradi typota ni delovala.
Ja unique string ni nujen, če so zapisi toliko različni.. Jaz imam same tekstovne zapise, tako da je delalo, če bi imel pa številke, kot sem dal v primeru bi se pa znalo kje kaj zalomit.
V glavnem, še enkrat hvala =)