MySql查询双WHERE子句

时间:2015-04-08 12:31:43

标签: php mysql sql wordpress

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

$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字段中的值列出用户。但如果这是空的,则管理员不会在任何地方列出。

3 个答案:

答案 0 :(得分:1)

你的WHERE子句必须是

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

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分:0)

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

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