[英]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.