1

第一次来这里.. 并且是 PHP MySQL 的新手。

我正在尝试将 WordPress 用户数据传输到另一个表以供某些自定义使用。这是我的桌子

我正在寻找的内容可以在 rc_users(最终结果)表中找到,请查看带有以下链接的图片,因为我是新来的,无法发布图片。

http://i.stack.imgur.com/F1yEc.jpg

不知何故,我设法从 wp_users 表中插入值,但现在无法从 wp_usermeta 表中插入值。

此外,我想根据条件转换 wp_user_level,因此如果用户具有10级别,它将转换为100等等。

这是我尝试过的

// inserting user auth info                  
"INSERT INTO rc_users
(userid, name, password, email, created) 
SELECT ID, user_login, user_pass, user_email, user_registered 
FROM wp_users",     

// inserting user level info         
"INSERT INTO rc_users
(role)
SELECT meta_value
FROM wp_usermeta
WHERE user_id = userid
AND meta_value = wp_user_level"

非常感谢你的帮助..

4

2 回答 2

0

您需要加入表wp_userwp_usermeta获取meta_value. 由于元数据是按行而不是按列保存的,因此您需要使用MAX()and来旋转结果CASE()

INSERT INTO rc_users(userid, created, email, name, password, `role`)
SELECT  a.ID, a.user_registered, a.user_email, 
        a.user_login, a.user_pass, 
        MAX(CASE WHEN b.meta_key = 'wp_user_level' THEN meta_value END) role
FROM    wp_user a
        INNER JOIN wp_usermeta b
            ON a.ID = b.user_id
GROUP   BY  a.ID, a.user_registered, a.user_email, 
            a.user_login, a.user_pass

我不知道为什么你的截图中角色的值是 100 而不是 10。

INSERT INTO rc_users(userid, created, email, name, password, `role`)
SELECT  a.ID, a.user_registered, a.user_email, 
        a.user_login, a.user_pass, 
        CASE    MAX(CASE WHEN b.meta_key = 'wp_user_level' THEN meta_value END) 
                WHEN 10 THEN 100
                WHEN 8 THEN 75
                ELSE 0
        END role
FROM    wp_user a
        INNER JOIN wp_usermeta b
            ON a.ID = b.user_id
GROUP   BY  a.ID, a.user_registered, a.user_email, 
            a.user_login, a.user_pass
于 2013-07-13T07:40:02.663 回答
0

而不是使用第二个插入查询,您应该使用更新查询

更新 rc_users set role=(SELECT meta_value FROM wp_usermeta WHERE user_id = userid AND meta_value = 'wp_user_level');

于 2013-07-13T07:50:17.910 回答