mysql - 在 Wordpress usermeta 上加入查询

标签 mysql database wordpress join

我们都喜欢 wordpress,对吧?

所以我不得不使用基本上具有这种结构的 usermeta 表。

umeta_id | user_id | meta_key | meta_value

由于某些原因,几个内部开发人员插件在这张表上写了很多额外的信息,最近我赢得了使用它的责任,并提取了一些我需要导出并保存在实际制作的结构中的重要信息对 Web 应用程序有意义。

举个例子,这是我能找到的那种数据:

umeta_id | user_id | meta_key | meta_value
 1       | 1       | ourID    | asdad878d7a
 2       | 1       | country  | fooland
 3       | 1       | firstname| foo
 4       | 1       | lastname | bar

我想创建一个类似于此结构的结果:

user_id  | ourID       | country
 1       | asdad878d7a | fooland

我尝试了一些东西,但实际上我也不习惯这种结构。

到目前为止,这是我的查询:

SELECT meta.umeta_id as umeta_id, meta.user_id as user_id, channel.meta_value as ourID, country.meta_value as country
FROM usermeta as meta
INNER JOIN usermeta as channel
INNER JOIN usermeta as country
WHERE channel.meta_key = 'ourID'
AND country.meta_key = 'country'

但是结果基本上是有问题的。我有很多相同 user_id 的副本,分配给 user_id 的每一行都有一个副本,但只报告所选字段而不是值。虽然这很有意义,但我不知道如何正确编写此查询。

像这样:

umeta_id | user_id | ourID       | country 
 1       | 51424   | UC6Y94UM6rj | United Kingdom
 1       | 51424   | UC6Y94UM6rj | Italy
 1       | 51424   | UC6Y94UM6rj | Italy
 1       | 51424   | UC6Y94UM6rj | Italy
 1       | 51424   | UC6Y94UM6rj | Croatia
 1       | 51424   | UC6Y94UM6rj | United States
 1       | 51424   | UC6Y94UM6rj | Croatia

很明显,我做错了什么,我在这里希望有人能帮助我理解如何正确运行这种查询,而不是让别人完成查询。

最佳答案

这会让您更接近您正在寻找的东西吗?

SELECT meta.umeta_id as umeta_id, meta.user_id as user_id, meta.meta_value as ourID, country.meta_value as country
FROM usermeta as meta
INNER JOIN usermeta as country ON meta.user_id = country.user_id
WHERE meta.meta_key = 'ourID' 
AND country.meta_key = 'country'

逻辑是首先找到具有meta_key 'ourID' 的条目。 user_idourID 的值是从这个条目中提取的,因此内部连接只需要合并 country 的值。 INNER JOIN 中的 ON 条件选择正确的国家条目。

关于mysql - 在 Wordpress usermeta 上加入查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35090443/

相关文章:

php - 使用PHP区分MySQL中的列

php - laravel errno 150 外键约束格式不正确

mysql - Spring Boot、Java、Docker Compose,尝试在两个容器(mysql、my-api)之间建立连接时获取 'Connection refused'

php - 嵌入观看链接中的视频

php - 我可以在 functions.php 中放置 IE 条件吗 - WordPress

mysql - 获取 Group By Date() 生成的列的平均值

java - 如何允许多个用户同时连接到我的 H2 数据库?

database - Sybase bcp 错误

html - 如何根据菜单中元素的数量根据需要动态地拥有更多列?

mysql - WordPress Max 登录重置