【发布时间】:2020-12-08 15:42:25
【问题描述】:
当我将以下 WHERE 子句添加到我的 sql 时,我的 first_name 和 last_name 输出为空。当我省略 WHERE 子句时,会填充 first_name 和 last_name。
SELECT t1.id,
t1.user_email,
Max(CASE
WHEN t2.meta_key = 'first_name' THEN t2.meta_value
END) AS first_name,
Max(CASE
WHEN t2.meta_key = 'last_name' THEN t2.meta_value
END) AS last_name
FROM wp_users AS t1
INNER JOIN wp_usermeta AS t2
ON t1.id = t2.user_id
WHERE t2.meta_value LIKE '%subscriber%'
GROUP BY t1.id,
t1.user_email
添加此 WHERE 子句,删除 first_name 和 last_name:
ID 电子邮件 first_name last_name
1 x@x.com
如果我删除 WHERE 子句,我会得到 first_name,last_name 但我只想显示订阅者:
ID 电子邮件 first_name last_name
1 x@x.com John Doe
【问题讨论】:
-
向我们展示一些示例数据、当前结果和想要的结果 - 全部为格式化文本(无图像)。简化! minimal reproducible example
-
谢谢 - 我添加了格式化示例
-
WHERE 子句减少返回的行数。它与 您选择 到 SELECT 的列数无关。但是,您的 WHERE 似乎删除了包含 first_name 和 last_name 的行,即 SELECT 列表案例表达式正在寻找的值。
-
跳过 GROUP BY 和 MAX() 函数一会儿,你就会明白发生了什么。
-
感谢您的指导-非常感谢