MySQL循环与last_insert_id()

时间:2015-09-28 04:34:03

标签: mysql wordpress loops last-insert-id

我尝试将一个数据库迁移到另一个数据库,只使用MySQL,它是两个WordPress数据库,我想把特定帖子类型的所有帖子(表格wp_posts)和所有相应的帖子元数据(表wp_postmeta,使用wp_posts ID)。 我的逻辑是使用带偏移的循环,所以我可以插入帖子,然后使用LAST_INSERT_ID()来放置postmeta。

很抱歉,如果这听起来很混乱,我不确定如何解释得很好,如果你不了解WP的结构我在最后一段写的内容可能绝对没有如果你了解MySQL。 无论哪种方式,这里是我使用的代码,它给了我一个错误:

/* SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END LOOP main' at line 1 */

SET @offsett := 0;
SELECT @maxx := COUNT(*) FROM quest.wp_posts WHERE post_type = 'page';
SET @indexx := 0;
main: LOOP
    SET @indexx := @index + 1;
    IF @indexx > @max THEN
        LEAVE main;
    END IF;
    SELECT @post_id := ID FROM quest.wp_posts WHERE post_type = 'pages' LIMIT 1 OFFSET @offsett;
    INSERT INTO new_quest.wp_posts (post_author, post_date, post_date_gmt, post_content, post_title, post_name, post_type) SELECT 1, qp.post_date, qp.post_date_gmt, qp.post_content, qp.post_title, qp.post_name, 'peterete' FROM quest.qp WHERE post_type = 'page' LIMIT 1 OFFSET @offsett;
    INSERT INTO new_quest.wp_postmeta (post_id, meta_key, meta_value) SELECT LAST_INSERT_ID(), qp.meta_key, qp.meta_value FROM quest.wp_postmeta qp WHERE post_id = @post_id;
    SET @offset := @offset + 1;
END LOOP main;

有人能指出我正确的方向吗?

0 个答案:

没有答案