我有以下的(簡化)表在左外連接表
表產品
ID
Title
表Data_Tags
ID
ForeignID
Tag
上有case語句返回單行爲產品ID 1添加兩個標籤:'固體'和'強'
下面的查詢將返回2行,如果我添加DISTINCT它將只返回1行按預期。
SELECT Products.ID, Products.Title
FROM Products LEFT OUTER JOIN Data_Tags ON Products.ID = Data_Tags.ForeignID
WHERE (Products.ID = 1)
我想一個CASE語句添加到查詢計算特別相關的某些關鍵字
CASE WHEN CONTAINS(Data_tags.tag, 'solid') THEN 100 ELSE 0 END AS TagsMatch
查詢將成爲本:
SELECT DISTINCT Products.ID, Products.Title, CASE WHEN CONTAINS(Data_tags.tag, 'solid') THEN 100 ELSE 0 END AS TagsMatch
FROM Products LEFT OUTER JOIN Data_Tags ON Products.ID = Data_Tags.ForeignID
WHERE (Products.ID = 1)
當運行查詢,它將返回兩行,這是非常有意義的,因爲它將輸出100代表'固體'(匹配)和0代表'強'(不匹配)標籤
但是我不確定如何修改查詢,只返回值爲0的單個行,如果沒有相關的標記匹配,則返回100,如果任何相關的標記匹配,則返回100。
我還想避免子查詢儘可能保持最佳性能。
我正在使用MS SQL Server 2014.
請指教。非常感謝你!
使用'MAX(CASE ....)'和'集團通過Product.ID' – 1000111
一起當我嘗試這種情況發生時的錯誤:「全文謂詞不能出現在aggegrate表達。將聚合表達式放在子查詢' – Onthrax
中您使用了錯誤的標籤。而是標記'SQL-SERVER'並刪除'MySQL' – 1000111