2010-02-24 5 views
8

Ich muss eine Spalte von einer Tabelle in eine andere übertragen. Die Quellentabelle hat eine andere Sortierung als die Zieltabelle (latin1_general_ci und latin1_swedish_ci).Illegale Mischung von Sortierungen in mySQL

Ich benutze

UPDATE target 
LEFT JOIN source ON target.artnr = source.artnr 
SET target.barcode = source.barcode 

ich eine "illegale Mischung aus Sortierungen" erhalten.

Was ist eine schnelle Lösung, um das zu erreichen, ohne beide Tabellen ändern zu müssen? Ich versuchte CONVERT und COLLATE, um die gesamte Operation in UTF-8 auszuführen, aber das half nicht. "Barcode" enthält nur numerische Daten (obwohl sie alle VARCHARs sind), daher gibt es keine Probleme bei der Sortierung. Ich muss das nur einmal tun.

Edit: Ich sortierte es mit einem CAST(fieldname as unsigned) auf jedem betroffenen Feld. Ich konnte das in diesem Fall tun, weil nur numerische Daten betroffen waren, aber es wäre schön, einen allgemeineren Ansatz zu kennen, also lasse ich die Frage offen.

Antwort

19

Ich habe versucht, CONVERT und COLLATE die ganze Operation in UTF-8, zu laufen, aber das half nicht.

Es nervte mich, heute so habe ich diese Tabellen und lief erfolgreich diese:

UPDATE target 
LEFT JOIN source ON(target.artnr = source.artnr COLLATE latin1_swedish_ci) 
SET target.barcode = source.barcode 
+0

Süße, das funktioniert. Vielen Dank! –

0

Wie wäre es bei der Auswahl mit nur 2 numerischen Spalten?

UPDATE target 
LEFT JOIN (
    SELECT 
     artnr COLLATE latin1_swedish_ci AS artnr, 
     barcode COLLATE latin1_swedish_ci AS barcode 
    FROM source 
    ) source ON target.artnr = source.artnr 
SET target.barcode = source.barcode 
+0

Cheers, clevere Idee, aber beide artnr und Barcode sind Varchars obwohl sie nur numerische Daten enthalten, so dass selbst sie allein werden das Problem verursachen. Ich werde das in meiner Frage betonen. –

+0

Überprüfen Sie meine aktualisierte Antwort, nur die Sache geändert ist, Sortierung in Subselect für jede Spalte hinzuzufügen (und Alias ​​richtigen Alias ​​nach ihm) –

Verwandte Themen