簡體   English   中英

向MySQL查詢添加其他條件會導致空響應

[英]Adding additional condition to MySQL query causes empty response

我的MySQL查詢有問題。 我應該根據年齡的上限和下限選擇成員。 例如,此查詢返回一些結果

SELECT DISTINCT users.* 
FROM wp_users as users  
INNER JOIN wp_usermeta as mt 
ON (users.ID = mt.user_id) 
WHERE 1=1 
AND (
    (mt.meta_key LIKE 'user_birthday' AND mt.meta_value <> '' AND mt.meta_value <= 1985) 
    AND (mt.meta_key LIKE 'user_birthday' AND mt.meta_value <> '' AND mt.meta_value >= 1920)
) 
AND users.ID NOT IN (1,2,3) 
ORDER BY users.user_registered desc

該查詢重新調整約70個結果。 但是,當我向此查詢添加“ First name”搜索時,如下所示:

SELECT DISTINCT users.* 
FROM wp_users as users 
INNER JOIN wp_usermeta as mt ON (users.ID = mt.user_id) 
WHERE 1=1 
AND (
    (mt.meta_key = '_upme_search_cache' AND mt.meta_value LIKE '%first_name::John%') 
    AND (mt.meta_key LIKE 'user_birthday' AND mt.meta_value <> '' AND mt.meta_value <= 1985) 
    AND (mt.meta_key LIKE 'user_birthday' AND mt.meta_value <> '' AND mt.meta_value >= 1920)
) 
AND users.ID NOT IN (1,2,3) 
ORDER BY users.user_registered desc

這將返回0個結果,但我知道數據庫中有2個Johns。

SELECT DISTINCT users.* 
FROM wp_users as users 
INNER JOIN wp_usermeta as mt ON (users.ID = mt.user_id) 
WHERE 1=1 AND (
    (mt.meta_key = '_upme_search_cache' AND mt.meta_value LIKE '%first_name::John%')
) AND users.ID NOT IN (1,2,3) 
ORDER BY users.user_registered desc

這一項返回2條記錄。

這里肯定沒有語法錯誤,但是我想我的邏輯在某個地方不正確嗎?

我應該提到這是安裝了UPME插件的WordPress數據庫。

我在聯接表或其他方面犯了錯誤嗎?

這可能會有所幫助。

$args = array(                      
        'meta_query'   => array( 'meta_query' => array(
                        array(
                            'key' => '_upme_search_cache',
                            'value' => 'first_name::John',
                            'compare' => 'LIKE'
                        ),
                        array(
                            'key' => 'user_birthday',
                            'value' => '1985',
                            'compare' => '<='
                        ),
                        array(
                            'key' => 'user_birthday',
                            'value' => '1920',
                            'compare' => '>='
                        )
                    )),
        'include'      => array(),
        'exclude'      => array(1,2,3),
        'orderby'      => user_registered ,
        'order'        =>DESC                   
     );

 $users = get_users( $args );

事實是,您正在查詢不在同一行中的數據(meta_key列的值不同)。 您需要另一個JOIN到wp_usermeta表或一些子查詢。 您可以使用此小提琴來說明這一點http://sqlfiddle.com/#!9/48836/2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM