Wordpress SQL - 多个WHERE子句

时间:2014-08-08 10:43:03

标签: mysql sql wordpress

好吧,自从我上次写一个sql查询以来已经有一段时间了。我有以下查询

$user_search->query_where = 
    str_replace('WHERE 1=1', 
        "WHERE 1=1 AND {$wpdb->users}.ID IN (
         SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta 
            WHERE {$wpdb->usermeta}.meta_key = 'select_team_leader' 
            AND {$wpdb->usermeta}.meta_value = {$user_leader})", 
            $user_search->query_where
    );

我想添加一个OR语句,如

OR {$wpdp->usermeta}.user_id = {$user_leader}

我需要使用内连接吗?感谢

1 个答案:

答案 0 :(得分:1)

不,您不需要使用额外的加入,只需组织查询以查找用户ID或meta_value

$user_search->query_where = 
    str_replace('WHERE 1=1', 
        "WHERE 1=1 AND {$wpdb->users}.ID IN (
         SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta 
            WHERE {$wpdb->usermeta}.meta_key = 'select_team_leader' 
            AND 
          ( 
           {$wpdb->usermeta}.meta_value = {$user_leader}
            OR {$wpdp->usermeta}.user_id = {$user_leader}
          )
       )", 
            $user_search->query_where
    );

所以上面的查询会查找meta_value等于提供的值ie。 {$ user_leader}或user_id等于{$ user_leader},但无论匹配meta_key应该是select_team_leader

根据评论进行修改

$user_search->query_where = 
    str_replace('WHERE 1=1', 
        "WHERE 1=1 AND {$wpdb->users}.ID IN (
         SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta 
            WHERE (
             {$wpdb->usermeta}.meta_key = 'select_team_leader' 
            AND {$wpdb->usermeta}.meta_value = {$user_leader} 
              )
            OR {$wpdp->usermeta}.user_id = {$user_leader}
       )", 
            $user_search->query_where
    );