这是我为搜索关键字“sector 2”的自动完成功能而执行的查询
SELECT display_text,token, relevancy ,
(CASE token
WHEN token = 'sector' THEN relevancy*1000
WHEN token = '2' THEN relevancy*1000
ELSE relevancy / 100
END) as real_relevancy
FROM location_search WHERE display_text LIKE '%sector%' AND display_text LIKE '%2%'
ORDER BY real_relevancy DESC
该表有五个字段:id、area_id、display_text、token 和 relevancy。显示文本是我想在自动完成搜索结果中显示的内容。并且 token 包含由空格分隔的显示文本。
就像显示文本“Sector 2 Noida”一样,表格中将有 3 个条目
id | area_id | display_text | token | relevancy
6 | 234 | Sector 2 Noida | sector | 441
7 | 234 | Sector 2 Noida | 2 | 986
8 | 234 | sector 2 Noida | noida | 660
对于所有其他显示区域也是如此。查询我在这里尝试做什么非常清楚,那就是在顶部获得更多相关结果。
问题是第一种情况评估为真,并且在令牌既不是扇区也不是 2 的随机情况下被执行。
就像结果集中的第一个结果是
display_text | token | relevancy | real_relevancy
Sector 29 - Powergrid , Gurgaon | Powergrid | 789 | 789000
为什么会这样。我的查询哪里出错了?可能我犯了一些愚蠢的错误。请帮忙。