我正在使用全文扩展默认的WordPress搜索,并有一个如下所示的SQL查询
SELECT SQL_CALC_FOUND_ROWS DISTINCT wp_posts.*,
MATCH (wp_posts.post_title, wp_posts.post_content) AGAINST ('"string" @4' IN BOOLEAN MODE) AS p_score,
MATCH (wp_postmeta.meta_value) AGAINST ('"string" @4' IN BOOLEAN MODE) AS pm_score
FROM wp_posts
LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id
LEFT JOIN wp_icl_translations ON wp_posts.ID = wp_icl_translations.element_id
LEFT JOIN wp_icl_languages ON wp_icl_translations.language_code = wp_icl_languages.code AND wp_icl_languages.active = 1
WHERE 1=1
AND IF(
MATCH (wp_posts.post_title, wp_posts.post_content) AGAINST ('"string" @4' IN BOOLEAN MODE) > MATCH (wp_postmeta.meta_value) AGAINST ('"string" @4' IN BOOLEAN MODE),
MATCH (wp_posts.post_title, wp_posts.post_content) AGAINST ('"string" @4' IN BOOLEAN MODE) > 0,
MATCH (wp_postmeta.meta_value) AGAINST ('"string" @4' IN BOOLEAN MODE) > 0
)
AND wp_icl_translations.language_code = 'hr'
AND wp_posts.post_status = 'publish'
ORDER BY p_score DESC LIMIT 0, 12问题是我在结果表中既有p_score又有pm_score,所以会出现重复,如下所示
ID | ... | p_score | pm_score
234 | ... | 9.234234 | 8.234323
234 | ... | 9.234234 | 0虽然从技术上讲,它们不是重复的(不同的分数),但我在搜索中仍然看到重复的。
是否可以执行一个查询,以便在获得MATCH的结果后,比较哪个分数(p_score或pm_score)较高,然后选择分数较高的那个进行显示?我在WHERE子句中尝试了类似的操作,但很明显,我做错了什么。
https://stackoverflow.com/questions/47572607
复制相似问题