繁体   English   中英

MySQL查询双WHERE子句

[英]MySql query double WHERE clause

我目前有一个查询,用于检查是否在数组值中找到某个单词。

$imploded = implode("','",$company_array); 
$query = "SELECT * 
          FROM $wpdb->usermeta 
          WHERE meta_key='company' 
          AND meta_value IN ('".$imploded."')";

$company_array包含不同的值。

我想添加另一个WHERE子句,但不知道如何。
它应该检查用户角色:

SELECT*
FROM $wpdb->usermeta
WHERE meta_key = 'wp_capabilities'
AND meta_value = 'subscriber'

也许某种联接查询? 我没有任何线索。

====样本数据和预期输出====
这是我目前的查询

$query = "SELECT * 
          FROM $wpdb->usermeta 
          WHERE meta_key='company' 
          AND meta_value IN ('".$imploded."')";

我想添加以下查询

SELECT*
FROM $wpdb->usermeta
WHERE meta_key = 'wp_capabilities'
AND meta_value = 'subscriber'

第一个查询将加载在特定公司工作的用户列表。 问题是................

废话。 我在写这篇文章时才意识到。
问题在于管理员也在用户列表中列出。 我希望他脱离结果。
根据用户在company字段中的值列出用户。 但是,如果该字段为空,则管理员不会在任何地方列出。

您的WHERE子句必须为

WHERE (meta_key='company' AND meta_value IN ('".$imploded."'))
   OR (meta_key = 'wp_capabilities' AND meta_value = 'subscriber')

这样尝试

$query = "SELECT * 
          FROM $wpdb->usermeta 
          WHERE (meta_key='company' 
          AND meta_value IN ('".$imploded."')) or (meta_key = 'wp_capabilities' and meta_value = 'subscriber')";

我认为您需要以下内容。 注意两个where子句的() OROR

$query = "SELECT * 
          FROM $wpdb->usermeta 
          WHERE ( meta_key='company' AND meta_value IN ('".$imploded."')") 
          OR (meta_key = 'wp_capabilities' AND meta_value = 'subscriber');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM