SQL搜索查询,如何为每个输入参数分配权重,以及如何按输入参数的权重对结果排序,
我有一个表[Car],有CarID、Make、Mode、Version、State、City、MinPrice、Maxprice等8列。 我想用Make、City、MinPrice、MaxPrice四个输入参数实现一个搜索算法 如何为每个输入参数指定权重 请建议我编写搜索查询,首先给出和结果,然后根据4个输入参数的权重给出或要遵循的结果和结果。尝试以下方法:SQL搜索查询,如何为每个输入参数分配权重,以及如何按输入参数的权重对结果排序,,sql,Sql,我有一个表[Car],有CarID、Make、Mode、Version、State、City、MinPrice、Maxprice等8列。 我想用Make、City、MinPrice、MaxPrice四个输入参数实现一个搜索算法 如何为每个输入参数指定权重 请建议我编写搜索查询,首先给出和结果,然后根据4个输入参数的权重给出或要遵循的结果和结果。尝试以下方法: select * from [Car] where Make = @Make or City = @City or
select * from [Car]
where Make = @Make or
City = @City or
MinPrice >= @MinPrice or
MaxPrice <= @MaxPrice
order by
case when Make = @Make then 3 else 0 end +
case when City = @City then 2 else 0 end +
case when MinPrice >= @MinPrice then 1 else 0 end +
case when MaxPrice <= @MaxPrice then 1 else 0 end
desc
尝试以下方法:
select * from [Car]
where Make = @Make or
City = @City or
MinPrice >= @MinPrice or
MaxPrice <= @MaxPrice
order by
case when Make = @Make then 3 else 0 end +
case when City = @City then 2 else 0 end +
case when MinPrice >= @MinPrice then 1 else 0 end +
case when MaxPrice <= @MaxPrice then 1 else 0 end
desc
你的问题不清楚。请提供示例数据、示例输入参数和预期输出。请清楚地解释这句话:请建议我编写搜索查询,首先给出和结果,然后根据4个输入参数的权重给出或要遵循的结果和结果。很难理解你想要什么你的问题不清楚。请提供示例数据、示例输入参数和预期输出。请清楚地解释这句话:请建议我编写搜索查询,首先给出和结果,然后根据4个输入参数的权重给出或要遵循的结果和结果。马克,很难理解你想要什么。非常感谢。它成功了。部分和结果都很好。对于或结果的一部分,我想让第一个首选项生成输入参数,然后第二个首选项生成城市。我指的是或结果的显示顺序。在或结果中,我指的是每个结果行,例如,如果Make等于输入参数Make,然后,该结果行应立即显示在OR结果中的第一个。在结果行中,如果Make不等于输入参数Make,并且如果City等于输入City,则该结果行应显示在OR结果中的第二个。。。请告诉我。谢谢。想为上述评论添加此内容,Make的权重大于city。城市的权重大于MinPrice。例如,Make的权重=3,city的权重=2,MinPrice的权重=1,MaxPrice的权重=1,这样我就能按要求的顺序得到结果,thanks@ChethanBabuR:Hi Chethan,答案是修改order by case子句中的then值以匹配所需的权重-我已相应地更新了我的答案。Hi Mark。。非常感谢你的回复。我得到了要求的结果。谢谢,你好,马克。非常感谢。它成功了。部分和结果都很好。对于或结果的一部分,我想让第一个首选项生成输入参数,然后第二个首选项生成城市。我指的是或结果的显示顺序。在或结果中,我指的是每个结果行,例如,如果Make等于输入参数Make,然后,该结果行应立即显示在OR结果中的第一个。在结果行中,如果Make不等于输入参数Make,并且如果City等于输入City,则该结果行应显示在OR结果中的第二个。。。请告诉我。谢谢。想为上述评论添加此内容,Make的权重大于city。城市的权重大于MinPrice。例如,Make的权重=3,city的权重=2,MinPrice的权重=1,MaxPrice的权重=1,这样我就能按要求的顺序得到结果,thanks@ChethanBabuR:Hi Chethan,答案是修改order by case子句中的then值以匹配所需的权重-我已相应地更新了我的答案。Hi Mark。。非常感谢你的回复。我得到了要求的结果。谢谢