我对mysql很陌生并且不知道那么多,从来没有我需要完成一些事情。 :)
bla bla
我正在试图弄清楚如何将字符串从一个字段连接到另一个字段的开头。在同一个表中,但行不同。使用id = parentID等的地方。 看看下面的表格,希望你能理解。
我的表:
table
id | textcol | extra_textcol | parentID
1 | 'text1' | NULL | NULL
2 | NULL | 'extratext2' | 1
3 | 'text' | NULL | NULL
结果我想要:
table
id | textcol | extra_textcol | parentID
1 | 'extratext2text1' | NULL | NULL
2 | NULL | 'extratext2' | 1
3 | 'text' | NULL | NULL
那里有谁可以帮我这个?
编辑:忘了说,我想要的结果来自更新:D
答案 0 :(得分:0)
SELECT mc.id, CONCAT(COALESCE(GROUP_CONCAT(mp.extra_textcol ORDER BY id SEPARATOR ''), ''), mc.textcol) AS textcol, mc.extra_textcol, parentID
FROM mytable mc
LEFT JOIN
mytable mp
ON mp.ParentID = mc.id
GROUP BY
mc.id
要进行更新,您必须先创建一个临时表,因为MySQL
不允许您在更新中使用子查询来更新表。
CREATE TABLE newtable (id INT NOT NULL PRIMARY KEY, textcol TEXT) ENGINE=Memory
AS
SELECT mc.id, CONCAT(COALESCE(GROUP_CONCAT(mp.extra_textcol ORDER BY id SEPARATOR ''), ''), mc.textcol) AS textcol, mc.extra_textcol, parentID
FROM mytable mc
LEFT JOIN
mytable mp
ON mp.ParentID = mc.id
GROUP BY
mc.id;
UPDATE mytable m
JOIN newtable n
ON m.id = n.id
SET m.textcol = n.textcol
如果CREATE TABLE
上出现内存不足错误,则必须使用MyISAM
代替Memory
存储引擎。