2011-01-19 20 views
1

私はmysqlにはかなり新しいので、あまり分かりません。 :)フィールドを別のフィールド、別の行にコピーします。id = parentID

bla bla

私は別の先頭に、一つのフィールドから文字列をCONCATする方法を把握しようとしています。同じテーブルではなく、異なる行。 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 

誰もが?

EDIT:回答を忘れてしまった、私が欲しい結果がUPDATEからである:D

+0

あなたは 'ParentId = 1'で複数のレコードを持っていますか?この場合、レコード '1 'の' textcol'には何を入れますか? – Quassnoi

+0

古いデータベースから新しいデータベースにデータをインポートしようとしています。 新しいエントリが作成されたときにデータがtextcolに入力されるので、新しいエントリはこれを必要としません。 私はtextcolに移動する必要があるextra_textcolの部分に基づいて古いデータを持っています。 – beholder

+0

あなたはその質問に答えなかった。あなたは 'ParentId = 1'で複数のレコードを持っていますか?この場合、レコード '1 'の' textcol'には何を入れますか? – Quassnoi

答えて

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上のメモリ不足エラーが発生している場合は

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 

、あなたはMyISAM代わりのMemoryストレージエンジンを使用する必要があります。

+0

ありがとう。私はエラーが発生している、 "列 'extra_textcol'フィールドリストであいまいです"。私はmc.extra_textcol、mp.parentIDのようなものに変更する必要があると思いますか? 更新のために私はちょうど更新mytableセットと一緒に行く...? – beholder

+0

申し訳ありません。私は新しい結果でテーブルを更新したいと言っていたはずです。 ^^;このような更新方法を教えてもらえますか? – beholder

+0

Brilliant!それは今完璧に動作しているように見えます。 :) どうもありがとう! – beholder

関連する問題