gpt4 book ai didi

sql-server - 搜索查询, 'order by' 优先级

转载 作者:行者123 更新时间:2023-12-03 02:36:30 25 4
gpt4 key购买 nike

我需要在小内容表中实现简单的搜索:id、名称、描述、内容。结果必须按优先级排序

  1. 姓名
  2. 描述
  3. 内容

这意味着如果在描述字段中找到搜索的单词,则仅在名称字段中包含狗的所有行之后显示该单词

我做了什么:

我尝试创建临时表,其结构类似于我使用的表,但具有另一个字段优先级。对于我用于搜索的每个字段,请插入选择到临时表

示例:

  DECLARE @query NVARCHAR(255)


CREATE TABLE #tbl_search
(
[id] INT NOT NULL ,
[name] NVARCHAR(255) ,
[description] NVARCHAR(MAX) ,
[content] NVARCHAR(MAX) ,
[priority] INT
)


--searching in name field
INSERT INTO #tbl_search
( [ID] ,
[name] ,
[description] ,
[content] ,
[priority]

)
SELECT [ID] ,
[name] ,
[description] ,
[content] ,
1
FROM [tbl_content]
WHERE name LIKE '%' + @query + '%'

--searching in description field
INSERT INTO #tbl_search
( [ID] ,
[name] ,
[description] ,
[content] ,
[priority]

)
SELECT [ID] ,
[name] ,
[description] ,
[content] ,
2
FROM [tbl_content]
WHERE description LIKE '%' + @query + '%'
AND id NOT IN ( SELECT id
FROM #tbl_search )
--.....

SELECT *
FROM #tbl_search
ORDER BY [priority]

DROP TABLE #tbl_search

最佳答案

一种方法是使用 CASE关键字:

SELECT name, description, content,
priority = CASE
WHEN name LIKE '%' + @query + '%' THEN 1
WHEN desription LIKE '%' + @query + '%' THEN 2
WHEN content LIKE '%' + @query + '%' THEN 3
END CASE
FROM tbl_content
WHERE
name LIKE '%' + @query + '%' OR
desription LIKE '%' + @query + '%' OR
content LIKE '%' + @query + '%'
ORDER BY priority ASC

关于sql-server - 搜索查询, 'order by' 优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2260909/

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