2012-04-10 8 views
0

Ich habe Tabelle A und B mit vielen zu eins Assoziationen (b enthält fk_a). Lassen Sie uns die Beispieltabellen übernehmen sind wie folgt:mysql: spezielle Verwendung von concat

A:

id first 
1 sample 
2 sample 

B:

id fk_a type value 
1 1  som thing 
2 1  oth other 
3 2  som thing 
4 2  oth any 

Ich möchte die "erste" Spalte in der Tabelle A, einzigartig zu sein, und ich möchte zu erreichen, um es zu, indem er: gewünschte

A:

id first 
1 sample-thing-other 
2 sample-thing-any 

Ist es möglich, reines MYSQL zu verwenden, um UPDATE und CONCAT in Tabelle A zu verwenden, um das gewünschte Update zu erhalten?

Es wäre leicht, wenn ich alles in einer Tabelle hatte, konnte ich nur schreiben

UPDATE A 
SET first = CONCAT(first, value) 

aber leider habe ich viele-zu-Eins-Verein, und ich bin nicht sicher, ob es sogar möglich, in einem solchen Fall ist .

+0

Was ist der tatsächliche Anwendungsfall? Das ID-Feld auf A bedeutet, dass die anderen Werte nicht eindeutig sein müssen, damit sie nützlich sind. Das ist der Zweck, relationale Tabellen zu verwenden. –

Antwort

1

Ich habe nicht die Instanz von MySQL, und nicht testen. Verwenden Sie die group_concat

UPDATE A, (SELECT fk_a, GROUP_CONCAT(value SEPARATOR '-') as concat_value FROM B GROUP BY fk_a) AS t 

SET A.first = CONCAT(A.first, '-', t.concat_value) 

WHERE A.id = t.fk_a; 
+0

Ich werde es testen, aber selbst wenn es einen Tippfehler gibt, denke ich, das ist genau das, was ich brauche – mkk