看看你的情况:
WHERE (
(
(meta_key=\'user_school_subjects\'
AND meta_value LIKE \'%history%\')
OR (meta_key=\'user_professional_courses\'
AND meta_value LIKE \'%history%\')
OR (meta_key=\'user_language_tutoring\'
AND meta_value LIKE \'%history%\')
OR (meta_key=\'user_music_tutoring\'
AND meta_value LIKE \'%history%\')
)
AND (meta_key=\'user_gender\'
AND meta_value=\'male\'))
您不可能有一个元密钥与以下其中一个匹配--
user_school_subjects
,user_professional_courses
,user_language_tutoring
,user_music_tutoring
。。。这也与此相匹配--
如果键匹配前四个键中的任何一个,并且必须匹配其中一个才能使该块为真,那么它将自动与第五个不匹配。你永远都找不到
true
除此之外。这个子句正是服务器所说的--不可能。
我建议WP_User_Query
但我认为它不符合你需要的逻辑。
你需要JOIN
在桌子上,类似这样的东西:
SELECT DISTINCT wpmu.user_id
FROM wp_usermeta AS wpmu
LEFT JOIN wp_usermeta AS gender ON wpmu.user_id = gender.user_id
WHERE (
(
(wpmu.meta_key=\'user_school_subjects\'
AND wpmu.meta_value LIKE \'%history%\')
OR (wpmu.meta_key=\'user_professional_courses\'
AND wpmu.meta_value LIKE \'%history%\')
OR (wpmu.meta_key=\'user_language_tutoring\'
AND wpmu.meta_value LIKE \'%history%\')
OR (wpmu.meta_key=\'user_music_tutoring\'
AND wpmu.meta_value LIKE \'%history%\')
)
AND (gender.meta_key=\'user_gender\'
AND gender.meta_value=\'male\')
)
我不能百分之百地发誓,因为没有你的数据我无法测试它,但这就是我的想法。