我正在对包含result = re.search('id=(\d+)', qry)
,title
和content
列的表格实施基本搜索,只需在列值上使用tag
即可。我希望根据LIKE
匹配的所有行分配3个点,基于title
匹配的行获得2个点,并根据tag
匹配得到1个点。< / p>
是否可以将所有内容都放入查询而不是需要使用3个查询?我现在有:
content
我正在使用SQLite,以防万一。
答案 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>;