Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在WHERE子句SQL查询中使用大小写语句_Mysql_Sql_Wordpress_Where Clause - Fatal编程技术网

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语句的内容?这对我很有效。非常感谢你抽出时间来帮助我,詹姆斯!