Mysql 在WHERE子句SQL查询中使用大小写语句
我写了一个查询,如下所示-Mysql 在WHERE子句SQL查询中使用大小写语句,mysql,sql,wordpress,where-clause,Mysql,Sql,Wordpress,Where Clause,我写了一个查询,如下所示- SELECT user_id, display_name, user_email, meta_key, meta_value FROM wp_usermeta um INNER JOIN wp_users u ON um.user_id = u.id WHERE CASE WHEN meta_key = "renewal_date" THEN meta_value = "a" WHEN meta_key = "wp_user_level" THEN meta_
SELECT user_id, display_name, user_email, meta_key, meta_value
FROM wp_usermeta um INNER JOIN wp_users u ON um.user_id = u.id
WHERE
CASE
WHEN meta_key = "renewal_date" THEN meta_value = "a"
WHEN meta_key = "wp_user_level" THEN meta_value <> "10"
END
我需要两个'when'语句的用户id相等。我的意思是,如果具有相同用户id的同一用户的meta_key作为续订日期,相应的meta_值作为更新日期,并且相同用户的meta_key作为wp_用户级别,相应的meta_值为10,那么他不应该显示在结果列表中。由于我对SQL的了解有限,我曾考虑在WHE语句之间使用AND,但这给了我一个语法错误 从您的描述中,我想我看到了您想要做的事情,但是您的查询不会这样工作。在wp_usermeta表中,每个用户id似乎有几行。这被称为EAV模型实体属性值,该模型使得报告非常困难,因为您的行应该是列 使其工作的一种方法是多次连接wp_usermeta表,使行从本质上成为列,如下所示:
SELECT u.id, u.display_name, u.user_email,
rd.meta_value AS renewal_date, ul.meta_value AS wp_user_level
FROM wp_users u
LEFT JOIN wp_usermeta rd ON rd.user_id=u.id AND rd.meta_key='renewal_date'
LEFT JOIN wp_usermeta ul ON ul.user_id=u.id AND ul.meta_key='wp_user_level'
WHERE rd.meta_value = 'a'
AND ul.meta_value <> '10'
请注意,没有“wp_用户级别”数据的用户将包括在本报告中。如果需要过滤掉这些连接,可以用内部连接替换左连接。此SQL是否在当前状态下为您运行?您是否可以发布尝试使用AND语句的内容?这对我很有效。非常感谢你抽出时间来帮助我,詹姆斯!