我的查詢從3個表中選擇數據,將結果設置爲'title'(一個表具有'description'作爲我需要查看的列)。我還創建了一個結果'doctype',其值表示它後來發現哪個表用於前端過濾器。然後,它通過訂單:具有union的子查詢計數全部
- 結果與搜索關鍵詞開始
- 結果中包含搜索關鍵詞中間的某個位置
- 結果與搜索關鍵詞結束
我需要的是得到計數爲每個查詢中的子查詢:
SELECT * FROM (
SELECT Title as title, 'docs' AS 'doctype' FROM docs
WHERE status IN ('publish', 'draft', 'review') AND Title LIKE '%' :searchterm '%'
UNION ALL
SELECT Title as title, 'sheets' AS 'doctype' FROM sheets
WHERE status IN ('publish', 'draft', 'review') AND Title LIKE '%' :searchterm '%'
UNION ALL
SELECT Description AS title, 'pres' AS 'doctype' from presentations
WHERE status IN ('publish', 'draft', 'review') AND Description LIKE '%' :searchterm '%'
) FINAL
ORDER BY
CASE
WHEN title LIKE :searchterm '%' THEN 1
WHEN title LIKE '%' :searchterm THEN 3
ELSE 2
END
LIMIT 300
並且還確認可以使用al i在ORDER BY中的名稱('標題')。
關閉我的頭頂我的解決辦法是單獨運行這些搜索詞和數着,但是這可能是最糟糕的方式^^ – GrumpyCrouton
你不能同時擁有mysql和sql-server - 請刪除無關標籤。 – Eli
謝謝@Eli,已完成 – DJC