gpt4 book ai didi

sql-server-2005 - 如何搜索给定字符串值的 "around"行?

转载 作者:行者123 更新时间:2023-12-03 01:21:24 25 4
gpt4 key购买 nike

我有一个表,其中有一个名为 identifiervarchar() 字段,其中包含实体的唯一名称。

我想搜索表格并查找具有给定标识符的行该标识符两侧最多 10 行,按字母顺序排序(即搜索到的标识符及其两侧相邻的行)。

在 SQL Server 2005 中表述这一点的最佳方法是什么?我猜测有一些 ROW_NUMBER() 魔法可以做到这一点,但我没有找到任何常规查询来执行此类操作。

这是迄今为止我能得到的最接近的结果,但性能很糟糕:

WITH 
allrows AS (
SELECT *, ROW_NUMBER() OVER(ORDER BY identifier DESC) AS RN
FROM mytable
),
centerrow AS (
SELECT RN AS CRN FROM allrows WHERE identifier = 'MyValue'
)
SELECT * FROM allrows, centerrow
WHERE RN BETWEEN (centerrow.CRN - 10) AND (centerrow.CRN + 10)

该表有超过200万条记录,标识符字段可以长达1000个字符。

最佳答案

SELECT TOP 11 * FROM MyTable WHERE identifier >= 'My Value' ORDER BY identifier ASC
UNION ALL
SELECT TOP 10 * FROM MyTable WHERE identifier < 'My Value' ORDER BY identifier DESC

关于sql-server-2005 - 如何搜索给定字符串值的 "around"行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9320485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com