我对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个结果。但是,当我将search for 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数据库。
我是不是把桌子连在一起弄错了?
最佳答案
问题是,您正在查询不在同一行中的数据(meta_key column的值不同)。您需要另一个JOIN来wp_usermeta
表,或者需要一些子查询。你可以用这把小提琴来说明这一点http://sqlfiddle.com/#!9/48836/2
关于php - 向MySQL查询添加其他条件会导致空响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29277264/