wordpress选择查询不起作用

时间:2017-05-21 19:18:52

标签: php mysql wordpress phpmyadmin

我正在努力使用wordpress的选择查询,这是无效的。奇怪的是我有2个选择查询,1个在当前运行的网站上工作。并且在本地测试机器上几乎相似的选择查询并且无法正常工作。

以下是来自live的查询,其中有效:

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_value LIKE '%Trainer%') 
        AND (mt.meta_key = '_upme_search_cache' AND mt.meta_value LIKE '%ACTIVE%') 
        AND (   (mt.meta_key = '_upme_search_cache' AND mt.meta_value NOT LIKE '%administrator%') 
            AND (mt.meta_key = '_upme_search_cache' AND mt.meta_value NOT LIKE '%sportentrainer%') ) 
    ORDER BY users.user_registered asc LIMIT 9 

这里来自本地机器的查询:

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_value LIKE '%trainer%') 
        AND (mt.meta_key = 'sent_activation_status' AND mt.meta_value LIKE '%ACTIVE%') 
        AND (  (mt.meta_key = 'account_type' AND mt.meta_value NOT LIKE '%administrator%') 
            OR (mt.meta_key = 'account_type' AND mt.meta_value NOT LIKE '%sportentrainer%') ) 
    ORDER BY users.user_registered asc LIMIT 9 

第二个查询的meta_key在单独搜索时都可以找到。您注意到meta_keys不同,但这不是问题。

第一个查询在phpmyadmin的实时版本上运行:4.1.9和mysql:5.0.12(如果我是正确的),第二个查询在本地版本的phpmyadmin上运行:4.6.6和mysql:5.6.35

有人能看出为什么第二个查询无效吗?

1 个答案:

答案 0 :(得分:0)

由于以下条件,它不会返回任何结果:

AND (mt.meta_key = 'sent_activation_status' AND mt.meta_value LIKE '%ACTIVE%') 
AND ((mt.meta_key = 'account_type' AND mt.meta_value NOT LIKE '%administrator%') 
            OR (mt.meta_key = 'account_type' AND mt.meta_value NOT LIKE '%sportentrainer%'))

如果你看一下上面的情况,就说mt.meta_key = 'sent_activation_status' AND mt.meta_key = 'account_type',现在,这是不可能的,因为meta_key不能sent_activation_statusaccount_type同时。

如果您想获得结果,则需要使用OR而不是AND