第一次来这里..以及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"
非常感谢你的帮助..
答案 0 :(得分:0)
您需要将wp_user
表与wp_usermeta
联系起来才能获得meta_value
。由于元组是按行而不是列保存的,因此您需要使用MAX()
和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
答案 1 :(得分:0)
您应该使用更新查询
,而不是使用第二个Insert查询更新rc_users set role =(SELECT meta_value FROM wp_usermeta WHERE user_id = userid AND meta_value ='wp_user_level');