在 2 个字段中搜索 table 先显示第一个结果
Search table in 2 fields show first result first
我有一个 table 名为照片(ID、标题、描述、日期、在线)。
我想按标题和描述搜索 table,但我想先查看标题搜索的结果,然后再查看描述的结果。
我尝试了正常搜索,但不知道如何将它们分开。
SELECT * FROM [Photos]
WHERE ([Online] = 1)
AND ([Description] like '%" + querytext + "%')
OR ([Title] like '%" + querytext + "%')
ORDER BY [Date] DESC, [Id] DESC
然后我尝试用 UNION 来做,但也没用。
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 *, 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
只需在 UNION
中包含一个 source
字段,将结果放入子查询中并对子查询进行排序。
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 title, * FROM [Photos]
WHERE ([Online] = 1)
AND ([Title] like '%" + querytext+ "%')
) T
ORDER BY title DESC, [Date] DESC, [Id] DESC
您可以在 ORDER BY
子句中使用 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
我有一个 table 名为照片(ID、标题、描述、日期、在线)。 我想按标题和描述搜索 table,但我想先查看标题搜索的结果,然后再查看描述的结果。
我尝试了正常搜索,但不知道如何将它们分开。
SELECT * FROM [Photos]
WHERE ([Online] = 1)
AND ([Description] like '%" + querytext + "%')
OR ([Title] like '%" + querytext + "%')
ORDER BY [Date] DESC, [Id] DESC
然后我尝试用 UNION 来做,但也没用。
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 *, 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
只需在 UNION
中包含一个 source
字段,将结果放入子查询中并对子查询进行排序。
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 title, * FROM [Photos]
WHERE ([Online] = 1)
AND ([Title] like '%" + querytext+ "%')
) T
ORDER BY title DESC, [Date] DESC, [Id] DESC
您可以在 ORDER BY
子句中使用 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