2010-07-17 8 views
1

J'ai deux tables comme ceci:SQL Concat la requête

TABLE user(
id  CHAR(100) 
text TEXT 
) 

TABLE post(
postid  CHAR(100) 
postedby CHAR(100) 
text  TEXT 
FOREIGN KEY (postedby) references user 
); 

je besoin d'une requête pour chaque utilisateur concaténer la colonne de texte de tous les messages de cet utilisateur et les mettre dans la colonne de texte de l'utilisateur. la commande n'est pas importante. Que dois-je faire?

Répondre

2

Pour sélectionner les valeurs utilisent GROUP_CONCAT:

SELECT postedby, GROUP_CONCAT(text) 
FROM post 
GROUP BY postedby 

Pour mettre à jour votre table d'origine, vous devrez joindre à ce résultat avec votre table d'origine à l'aide d'un multi-table update.

UPDATE user 
LEFT JOIN 
(
    SELECT postedby, GROUP_CONCAT(text) AS text 
    FROM post 
    GROUP BY postedby 
) T1 
ON user.id = T1.postedby 
SET user.text = IFNULL(T1.text, '');