SQL查询,为结果提供点排名

时间:2016-12-13 16:36:21

标签: sql sqlite

我正在对包含result = re.search('id=(\d+)', qry) titlecontent列的表格实施基本搜索,只需在列值上使用tag即可。我希望根据LIKE匹配的所有行分配3个点,基于title匹配的行获得2个点,并根据tag匹配得到1个点。< / p>

是否可以将所有内容都放入查询而不是需要使用3个查询?我现在有:

content

我正在使用SQLite,以防万一。

1 个答案:

答案 0 :(得分:1)

使用case

select (case when <title condition> then 3
             when <content condition> then 2
             when <tag condition> then 1
        end) as points, t.*
from t
where <title condition> or <content condition> or <tag condition>;

我不知道条件是什么。你可以填写。

如果,你想要点数加起来(一行总共最多6个),逻辑是相似的:

select ((case when <title condition> then 3 else 0 end) +
        (case when <content condition> then 2 else 0 end) +
        (case when <tag condition> then 1 else 0 end)
       ) as points, t.*
from t
where <title condition> or <content condition> or <tag condition>;