gpt4 book ai didi

用于选择搜索参数的前几行的sql语句

转载 作者:行者123 更新时间:2023-11-29 13:03:44 25 4
gpt4 key购买 nike

我在一个sql语句(如果存在的话)之后或者如何设置一个方法使用几个sql语句来实现下面的。

我有一个列表框和一个搜索文本框。

在搜索框中,用户将输入姓氏,例如史密斯。然后我想用这样的东西查询数据库以进行搜索:

select * FROM customer where surname LIKE searchparam

这将为我提供姓氏包含:SMITH 的客户的所有结果。很简单,对吧?

我需要做的是限制返回的结果。如果搜索参数只是 S,这个语句可以给我 1000 行。我想要的是结果,仅限于前 20 个匹配项和第一个匹配项之前的 10 行。

例如SMI搜索:

Sives
Skimmings
Skinner
Skipper
Slater
Sloan
Slow
Small
Smallwood
Smetain
Smith ----------- This is the first match of my query. But i want the previous 10 and following 20.
Smith
Smith
Smith
Smith
Smoday
Smyth
Snedden
Snell
Snow
Sohn
Solis
Solomon
Solway
Sommer
Sommers
Soper
Sorace
Spears
Spedding

有没有办法做到这一点?尽可能少的sql语句。

原因?我正在为互联网连接速度较慢的用户创建一个应用。

我正在使用 POSTGRESQL v9

谢谢安德鲁

最佳答案

WITH ranked AS (
SELECT *, ROW_NUMBER() over (ORDER BY surname) AS rowNumber FROM customer
)
SELECT ranked.*
FROM ranked, (SELECT MIN(rowNumber) target FROM ranked WHERE surname LIKE searchparam) found
WHERE ranked.rowNumber BETWEEN found.target - 10 AND found.target + 20
ORDER BY ranked.rowNumber

SQL fiddle here .请注意, fiddle 使用示例数据,我将范围修改为之前的 3 个条目和过去的 6 个条目。

关于用于选择搜索参数的前几行的sql语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21407689/

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