Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 基于不同条件的结果优先级搜索_Sql_Sql Server - Fatal编程技术网

Sql 基于不同条件的结果优先级搜索

Sql 基于不同条件的结果优先级搜索,sql,sql-server,Sql,Sql Server,我有一个自动完成的搜索框,我正在为客户工作。数据库在SQL Server中,有大量数据 我已经能够对数据库进行类似标准的查询,这不是什么大问题,但客户机提出了一些要求 假设搜索关键字是“伦敦机场” 显示的结果必须具有一定的优先级。以下是优先标准: 伦敦和机场的比赛结果必须显示在榜首。e、 g.伦敦机场、伦敦主机场等 伦敦的结果必须紧随其后,因为它与城市领域相匹配 机场将紧随其后,因为它是分类的一部分 实际上,要求首先包括英国的结果,但我已经注意到了这一点 假设这张桌子是空的 机场名称、国家、城市

我有一个自动完成的搜索框,我正在为客户工作。数据库在SQL Server中,有大量数据

我已经能够对数据库进行类似标准的查询,这不是什么大问题,但客户机提出了一些要求

假设搜索关键字是“伦敦机场”

显示的结果必须具有一定的优先级。以下是优先标准:

  • 伦敦和机场的比赛结果必须显示在榜首。e、 g.伦敦机场、伦敦主机场等
  • 伦敦的结果必须紧随其后,因为它与城市领域相匹配
  • 机场将紧随其后,因为它是分类的一部分
  • 实际上,要求首先包括英国的结果,但我已经注意到了这一点

    假设这张桌子是空的

    机场名称、国家、城市、地理标识等

    我创建了一个表函数,将关键字拆分为结果的表行,然后执行类似的查询 类似于“%split_table.result%”

    问题是,即使对于第一个条件,上述方法也在进行OR查询,只显示伦敦和机场的结果。。。我想在这里进行AND查询,如果能使用我创建的split table函数,我将不胜感激

    我需要一些关于如何设置这些优先级的想法


    我真的需要一些帮助。

    一个行动计划是构建单独的结果集并将它们合并在一起

    select Id, Name
    from
        (
             Select Id, Name, 1 as SearchRank from tables where (primary filter)
             union 
             Select Id, Name, 2 as SearchRank from tables where (secondary filter)
             union 
             Select Id, Name, 3 as SearchRank from tables where (tertiary filter)
        ) results
    group by Id, Name
    order by Min(SearchRank)
    

    希望这对您使用sql server有所帮助


    我不能使用全文搜索,因为数据库没有全文索引,而且我们已经深入到开发阶段。