我目前正在将一个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