我目前正在將一個Drupal博客遷移到Wordpress的MySQL數據庫上。mySQL命令來聚合匹配(Drupal到Wordpress遷移)
我已經導入我的所有職位,目前我想所有我的Drupal後的圖像(位於story_image小部件)的關聯到我的WordPress的職位。
當我運行此查詢:
UPDATE IGNORE wordpress.wp_posts p, drupal.content_field_story_image i, drupal.files f
SET p.post_content =
CONCAT(
f.filename, ' ', p.post_content
)
WHERE p.ID = i.nid
AND i.field_story_image_fid = f.fid
AND (
f.filename LIKE '%.jpg'
OR f.filename LIKE '%.jpeg'
OR f.filename LIKE '%.png'
OR f.filename LIKE '%.gif'
);
我所有的WordPress的職位預先計劃他們的圖像只有一個,但我希望它前面加上所有的人的名單。
我有點生鏽用sql的東西,想知道什麼,語句將每次追加文件名有一個正確的匹配,而不是僅僅一次。
這裏是數據庫和表我與
DATABASE: wordpress
TABLE: wp_posts
id | post_content
------------------
1 | hello
DATABASE: drupal
TABLE: content_field_story_image
nid | field_story_image_fid
----------------------------
1 | 18
1 | 19
TABLE: files
fid | filename
---------------
18 | alpha.jpeg
19 | beta.jpeg
預計POST_CONTENT工作更新後的簡化版本:更新後
beta.jpeg alpha.jpeg hello
實際POST_CONTENT:
alpha.jpeg hello
我可能甚至不應該在UPDATE ... SET中開始。在此先感謝您的任何建議。
更新:
感謝提供我一直在GROUP_CONCAT玩弄的答案
我現在有這樣的查詢返回的圖像列表每篇文章
SELECT GROUP_CONCAT(drupal.files.filename SEPARATOR ' ')
FROM wordpress.wp_posts , drupal.content_field_story_image, drupal.files
WHERE wordpress.wp_posts.ID = drupal.content_field_story_image.vid
AND drupal.content_field_story_image.field_story_image_fid = drupal.files.fid
AND (
drupal.files.filename LIKE '%.jpg'
OR drupal.files.filename LIKE '%.jpeg'
OR drupal.files.filename LIKE '%.png'
OR drupal.files.filename LIKE '%.gif'
)
GROUP BY wordpress.wp_posts.ID;
現在只需要尋找一種方法將該列表插入每個WordPress的帖子。
我也有簡單的「UPDATE」試過這個,而不是「UPDATE忽略」,但無濟於事。 – 2012-03-30 07:18:18