2016-02-13 69 views
1

我想知道如何將全文搜索查詢與附加子句結合起來以顯示最後更新的行。MySQL,全文搜索以顯示最近更新的行

我有一個數據庫 - advertisements該表有許多領域之一是'標題'。我用全文搜索搜索這一欄。

實例DB:

  1. 一行標題:Juniour PHP開發
  2. 一行標題:Seniour PHP開發
  3. 一行標題:C++開發人員

如果我搜索我的網站例如:

「PHP Developer」 - >那麼結果集將是

  • Juniour PHP開發
  • Seniour PHP開發
  • C++開發

這是很好的。

但是我需要擴展它以返回最新更新的準確結果。 我在數據庫中有updated_at列。

E.g.當我搜索我的網站,我想獲得類似的結果:

「PHP開發者」 - >然後我要的結果集應該是:

  1. 首先顯示的PHP開發者,但顯示最後第一

  2. 然後顯示每一個其他開發人員(如C++開發人員)更新的,他們也必須是爲了與最後更新的人第一

我想重新(當搜索「PHP Developer」時):

  1. Juniour PHP Developer - 例如的updated_at柱= 13.02.16
  2. Seniour PHP Developer - 的updated_at = 10.02.16
  3. Juniour PHP Developer - 的updated_at = 04.01.16

  4. C++ Developer - 的updated_at = 13.02.16

  5. 爪哇Developer - 的updated_at = 02.02.15

我怎麼能d那?

回答

1

你可以通過在updated_at列中使用的命令一樣

<your-query-here> 
order by updated_at asc 

或者你可以創建某種衍生秩序和對秩序的,喜歡

<your-query-here>  
order by 
    (
     case 
      when <something> then 1 
      when <something-else> then 2 
      ... 
     end 
    ) asc 
+0

如果我搜索「PHP開發人員「 - 當我使用'ORDER BY updated_at'時,問題是當」C++ Developer「具有最新'updated_at'值 - >時,C++先到先,這是不相關的,因爲PHP開發人員應該是第一個。 – Combine

+0

你有沒有嘗試任何涉及案件的順序?你可以使用類似於:order by(當上層(標題)像'%<搜索查詢>%'的情況下,則1 else 0 end)desc,updated_at asc –