2010-07-17 36 views
1

我有两个表是这样的:SQL查询的毗连

TABLE user(
id  CHAR(100) 
text TEXT 
) 

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

我需要一个查询,为每个用户串接该用户的所有帖子的文本列,并把它们放在用户的文本列。顺序并不重要。 我该怎么办?

回答

2

要选择的值,用GROUP_CONCAT

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

要更新原始表,您将需要加入这个结果与使用多台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, '');