来自wp_usermeta.value查询的mySQL Wordpress创建表无效

时间:2015-06-05 14:04:32

标签: mysql wordpress

使用我的第一个WP插件/学习工作中的项目的SQL。

我正在使用mySQL 5.5并计划通过PHP中的$ wpdb-> query()函数运行以下代码,尽管我现在直接在phpMyAdmin中进行测试。

我正在尝试创建一个表,它结合并简化了wp_usermeta表和另一个插件(buddypress)中的信息,以创建一个表,然后我可以拉出创建由不同字段(名称,位置,点)组织的用户报告。 / p>

根据同事的建议,我已经制作了一个新表来整合数据。

CREATE TABLE new_table(
user_id varchar(255),
first_name varchar(255),
last_name varchar(255),
points varchar(255),
location varchar(255)

然后我将使用wp_usermeta表中的值进行更新。如果您不知道用户元表如下所示:

| umeta_id | user_id | meta_key | meta_value |

| 1 | 20 | last_name | Doe |

| 2 | 20 | FIRST_NAME |约翰|

| 3 | 20 |点| 500 |

| 4 | 33 | last_name |污垢|

| 5 | 33 | FIRST_NAME |乔|

| 3 | 33 |点| 800 |

然后是具有类似结构的buddypress表。

| id | field_id | user_id |价值|

| 1 | 1 | 20 |纽约|

| 2 | 2 | 20 |蓝色|

| 3 | 1 | 33 |伦敦|

| 4 | 2 | 33 |红色|

user_id字段标识用户并且在表之间是相同的,但表不会相互引用。

所以我试图使用这段代码

INSERT INTO new_table( user_id, last_name )
SELECT user_id, meta_value
FROM wp_usermeta
WHERE meta_key = 'last_name';

UPDATE new_table
SET first_name = wp_usermeta.meta_value
WHERE new_table.user_id = wp_usermeta.user_id
AND wp_usermeta.meta_key = 'first_name';

在'where子句'中返回“未知列'wp_usermeta.user_id'”

我找到了有关UPDATE说要在列中添加引号的建议。像

UPDATE new_table
SET first_name = "wp_usermeta.meta_value"
WHERE new_table.user_id = "wp_usermeta.user_id"
AND "wp_usermeta.meta_key" = 'first_name';

这将无错误地运行,但first_name列仍为NULL。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这解决了这个问题。

UPDATE new_table as table
SET first_name = (
SELECT meta_value
FROM wp_usermeta
WHERE table.user_id = wp_usermeta.user_id
AND wp_usermeta.meta_key = 'first_name');