sql-server - MSSQL查询FREETEXTTABLE过滤
问题描述
SELECT * FROM tblA
--Result:
--[DocFileId] Status
--1 0
--2 1
--3 0
--4 1
--5 1
SELECT * FROM FREETEXTTABLE(DB_B..DocOcrText, OcrText, 'Appointment', 5) as Key_Tbl
--Result:
--KEY RANK
--1 500
--2 400
--3 300
--4 200
--5 200
SELECT * FROM tblA WHERE tblA.Status = 1
--Result:
--[DocFileId] Status
--2 1
--4 1
--5 1
SELECT * FROM FREETEXTTABLE(DB_B..DocOcrText, OcrText, 'Appointment', 2) as Key_Tbl
--Result:
--KEY RANK
--1 500
--2 400
SELECT * FROM tblA
INNER JOIN FREETEXTTABLE(DB_B..DocOcrText, OcrText, 'Appointment', 2) as Key_Tbl on tblA.[DocFileId] = Key_Tbl.[Key]
WHERE tblA.Status = 1
--Result:
--[DocFileId] Status KEY RANK
--2 1 2 400
--EXPECTED RESULT 1:
--[DocFileId] Status KEY RANK
--2 1 2 400
--4 1 4 200
--EXPECTED RESULT 2:
--[DocFileId] Status KEY RANK
--2 1 2 400
--4 1 4 200
--5 1 5 200
这是我的问题的简化版本。在我的作品中,FREETEXTTABLE 的最高排名被设置为一个很大的数字,2000。
预期结果 1
无论如何,我要预先过滤 tblA.Status = 1 上的条件,然后将该结果对 FREETEXTTABLE(DB_B..DocOcrText, OcrText, 'Appointment', 2) 进行过滤以获得我的预期结果1?
预期结果 2
在更糟糕的情况下,由于键具有相同的排名,示例键 4 和 5 具有相同的排名 200。由于 FREETEXTTABLE 上的最高排名设置,最低的不会显示,无论如何我都显示甚至已经超过了最高排名?
解决方案
推荐阅读
- flutter - 不知道如何重叠两个小部件并避免“底部溢出 199 像素”
- php - 如何使所有用户的列字段及其值相同
- javascript - 用于检查所有图像是否已完全加载的 Angular 指令
- sql - 输出计数作为值
- python - 将网站中的多个页面抓取到 csv 文件中
- arrays - 在Google工作表查询公式数据中显示字符串值而不是真假
- c++ - 所以我得到一个“没有匹配的函数来调用......”错误
- php - Elastic Search / Elasica php - 对包含 NULL 的字段的 OR 查询不起作用
- python - 我的 python 代码运行完美,但 exe 没有
- docker - Angular 9 Dockerizing