Sql 两个字段中的搜索表首先显示第一个结果
我有一个名为Photos的表(Id、标题、描述、日期、联机)。 我想按标题和说明搜索表,但我想先查看标题搜索的结果,然后查看说明的结果 我尝试了正常的搜索,但不知道如何将它们分开Sql 两个字段中的搜索表首先显示第一个结果,sql,union,Sql,Union,我有一个名为Photos的表(Id、标题、描述、日期、联机)。 我想按标题和说明搜索表,但我想先查看标题搜索的结果,然后查看说明的结果 我尝试了正常的搜索,但不知道如何将它们分开 SELECT * FROM [Photos] WHERE ([Online] = 1) AND ([Description] like '%" + querytext + "%') OR ([Title] like '%" + querytext + "%') ORDER BY [Date] DESC, [Id
SELECT * FROM [Photos]
WHERE ([Online] = 1)
AND ([Description] like '%" + querytext + "%')
OR ([Title] like '%" + querytext + "%')
ORDER BY [Date] DESC, [Id] DESC
然后我试着和工会合作,但也没有成功
SELECT * FROM [Photos]
WHERE ([Online] = 1)
AND ([Description] like '%" + querytext + "%')
UNION
SELECT * FROM [Photos]
WHERE ([Online] = 1)
AND ([Title] like '%" + querytext+ "%')
ORDER BY [Date] DESC, [Id] DESCBeto
试试这个:
SELECT * FROM [Photos]
WHERE ([Online] = 1)
AND (([Description] like '%" + querytext + "%')
OR ([Title] like '%" + querytext + "%'))
ORDER BY [Date] DESC, [Id] DESC
这个怎么样:
SELECT *, CASE WHEN ([Description] like '%" + querytext + "%') THEN 1 WHEN ([Title] like '%" + querytext + "%') THEN 2 END AS ord FROM [Photos]
WHERE ([Online] = 1)
AND (([Description] like '%" + querytext + "%')
OR ([Title] like '%" + querytext + "%'))
ORDER BY [Date] DESC, [Id] DESC , ord DESC
试试这个:
SELECT * FROM [Photos]
WHERE ([Online] = 1)
AND (([Description] like '%" + querytext + "%')
OR ([Title] like '%" + querytext + "%'))
ORDER BY [Date] DESC, [Id] DESC
这个怎么样:
SELECT *, CASE WHEN ([Description] like '%" + querytext + "%') THEN 1 WHEN ([Title] like '%" + querytext + "%') THEN 2 END AS ord FROM [Photos]
WHERE ([Online] = 1)
AND (([Description] like '%" + querytext + "%')
OR ([Title] like '%" + querytext + "%'))
ORDER BY [Date] DESC, [Id] DESC , ord DESC
添加一些将标记行的列:
SELECT *, 1 AS Mark
FROM [Photos]
WHERE ([Online] = 1)
AND ([Title] like '%" + querytext + "%')
UNION ALL
SELECT *, 2 AS Mark
FROM [Photos]
WHERE ([Online] = 1)
AND ([Description] like '%" + querytext+ "%')
ORDER BY Mark, [Date] DESC, [Id] DESC
添加一些将标记行的列:
SELECT *, 1 AS Mark
FROM [Photos]
WHERE ([Online] = 1)
AND ([Title] like '%" + querytext + "%')
UNION ALL
SELECT *, 2 AS Mark
FROM [Photos]
WHERE ([Online] = 1)
AND ([Description] like '%" + querytext+ "%')
ORDER BY Mark, [Date] DESC, [Id] DESC
只需在您的
联合
上包含一个源
字段,将结果放入子查询并对子查询进行排序
SELECT *
FROM (
SELECT 'Description' as source, * FROM [Photos]
WHERE ([Online] = 1)
AND ([Description] like '%" + querytext + "%')
UNION
SELECT 'Title' as source, * FROM [Photos]
WHERE ([Online] = 1)
AND ([Title] like '%" + querytext+ "%')
) T
ORDER BY source DESC, [Date] DESC, [Id] DESC
只需在您的
联合
上包含一个源
字段,将结果放入子查询并对子查询进行排序
SELECT *
FROM (
SELECT 'Description' as source, * FROM [Photos]
WHERE ([Online] = 1)
AND ([Description] like '%" + querytext + "%')
UNION
SELECT 'Title' as source, * FROM [Photos]
WHERE ([Online] = 1)
AND ([Title] like '%" + querytext+ "%')
) T
ORDER BY source DESC, [Date] DESC, [Id] DESC
您可以在
orderby
子句中使用CASE
表达式:
SELECT *
FROM Photos
WHERE
Online = 1
AND Description like '%" + querytext + "%'
OR Title like '%" + querytext + "%'
ORDER BY
CASE WHEN Title like '%" + querytext + "%' THEN 1 ELSE 2 END,
[Date] DESC,
[Id] DESC
您可以在
orderby
子句中使用CASE
表达式:
SELECT *
FROM Photos
WHERE
Online = 1
AND Description like '%" + querytext + "%'
OR Title like '%" + querytext + "%'
ORDER BY
CASE WHEN Title like '%" + querytext + "%' THEN 1 ELSE 2 END,
[Date] DESC,
[Id] DESC
你不也需要按马克点菜吗?是的,你不需要把它们都放在子查询中吗?@Fred,你当然需要。谢谢你发现了这一点。@JuanCarlosOropeza,它不需要输入子查询就可以工作。它重复在标题和描述中都有查询文本的记录。试图从UNION ALL中删除ALL,但没有任何区别。您不需要按Mark排序吗?是的,您不需要将两者都放入子查询中吗?@Fred,您当然需要。谢谢你发现了这一点。@JuanCarlosOropeza,它不需要输入子查询就可以工作。它重复在标题和描述中都有查询文本的记录。试图从UNION ALL中删除ALL,但没有任何区别。它给了我与我的第一个代码相同的结果。我需要它在搜索结果中首先显示匹配的标题,然后显示匹配的描述。Kamran您走的是正确的道路,但filiprem解决方案很简单。它为我提供了与我的第一个代码相同的结果。我需要它在搜索结果中首先显示匹配的标题,然后显示匹配的描述。Kamran您走的是正确的道路,但filiprem解决方案很简单。复制标题和描述上都有querytext的记录。那么@Kamran Farzami的上一次更新呢?看起来像是在右边track@Humberto您可以共享示例数据和预期输出吗?复制标题和描述上都有querytext的记录。来自@Kamran Farzami的最后一次更新数据如何?看起来像是在右边track@Humberto您能否共享示例数据和预期输出?