我们都喜欢 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_id
和 ourID
的值是从这个条目中提取的,因此内部连接只需要合并 country
的值。 INNER JOIN
中的 ON
条件选择正确的国家条目。
关于mysql - 在 Wordpress usermeta 上加入查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35090443/