如何查詢表格存儲(ID,標題,公司) 以獲得標題包含「條款」的所有記錄,首先顯示完全匹配的記錄,然後是部分匹配。 換句話說,如果即時尋找 「富」 我的魔杖顯示訂單聯合但保持不同
- 美孚記錄和兒子
- 好富
- 富吧
- 足球
- Herfooles
繼承人我有什麼
Create PROCEDURE [dbo].[SearchUserInfo]
@query nvarchar(500),
@term nvarchar(500)
(SELECT Title,Company,
1 as match
FROM Stores
WHERE CONTAINS(Title, @query))
UNION
(SELECT Title,Company,
0 as match
FROM Stores
WHERE Title like '%' + @term +'%')
order by match desc
此查詢的問題是它返回重複的記錄。 如果我刪除0作爲匹配tehn我不知道如何排序,所以來自CONTAINS的結果將出現在來自LIKE的結果之前。
感謝
你有使用UNION ALL的原因嗎?對我來說它也可以和UNION一起工作。感謝你的回答。 – Levon
@Levon - 在這種情況下它可能會給你相同的計劃,因爲它不會因爲後面的GROUP BY而改變語義,但總的來說,你知道上半部分中的任何內容都不會在下半部分重複,因爲「匹配」的不同值,所以在兩個結果的這三列上沒有運行「DISTINCT」的點。 –