gpt4 book ai didi

mysql - 将多个mysql表结果聚合为一个

转载 作者:可可西里 更新时间:2023-11-01 08:09:13 26 4
gpt4 key购买 nike

我正在写一个包含请愿书的 wordpress 网站,我需要按姓名、国家和职位显示所有请愿者。

但是我使用的 wordpress 主题设置为将请愿用户的值存储在多行中(似乎 wordpress 总是对用户这样做)。

每个用户都存储为具有“请愿者”角色的 WordPress 用户。我设法让所有的请愿者都使用这个查询

SELECT display_name
, meta_value
, meta_key
FROM wp_users
JOIN wp_usermeta
ON wp_users.ID = wp_usermeta.user_id
WHERE meta_key = "petition_user_country"
OR meta_key = "petition_user_state"
AND meta_value !=""
ORDER
BY ID DESC;

此查询现在返回(仅包含测试数据)

+--------------------------+------------+-----------------------+
| display_name | meta_value | meta_key |
+--------------------------+------------+-----------------------+
| Test3 Test34 | AF | petition_user_country |
| Test3 Test34 | Tester | petition_user_state |
| Test Testnomsen | NO | petition_user_country |
| Test Testnomsen | Student | petition_user_state |
| Brushan | NO | petition_user_country |
| Kristian | Student | petition_user_state |
| Andreas Noe | NO | petition_user_country |
| Georg Simone | NO | petition_user_country |
+--------------------------+------------+-----------------------+

meta_value 列同时包含此人的职位和他们来自的国家/地区。我需要我的 HTML 表格来将每个人显示为一个并显示国家、职位和姓名。

最佳答案

您可以使用聚合来获取每个实体及其不同属性的单行数据

SELECT display_name,
MAX(CASE WHEN meta_key = 'petition_user_country' THEN meta_value ELSE NULL END) country,
MAX(CASE WHEN meta_key = 'petition_user_state' THEN meta_value ELSE NULL END) state,
FROM wp_users
JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id
WHERE meta_key IN('petition_user_country','petition_user_state')
AND meta_value !=""
GROUP BY display_name
ORDER BY display_name ASC;

关于mysql - 将多个mysql表结果聚合为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50629450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com