2016-07-21 37 views
0

當我用MySQL LIKE搜索幾個字段時,有沒有辦法知道在哪個字段中找到字符串?MySQL:找到搜索字符串的字段列表?

SELECT * FROM DB WHERE title like "%search%" OR description LIKE "%search%" or tags LIKE "%search%

我知道CASEWHEN

​​

但最終我想用逗號分隔的字段列表如果字符串是在幾個領域中。

這可能嗎?

編輯澄清:

我想我的領域`found_in'當搜索項在標題&描述被發現是‘標題,描述’。

回答

0

試試這個,

SELECT *, 
     CASE WHEN (title + description) like '%search%' THEN title +', ' + description 
     [...] 
     END AS found_in 
    FROM [...] 
WHERE [...] 
+0

謝謝,但查詢工作正常。 – thomas

+0

我正在更新我的查詢請嘗試此@thomas。 –

1

一種可能的方式是一系列被聯合查詢,每一個領域的。每個返回它被發現的字段的名稱,然後使用它作爲子查詢,並對結果做GROUP_CONCAT: -

SELECT id, 
     title, 
     description, 
     tags, 
     GROUP_CONCAT(field_found) 
FROM 
(
    SELECT 'title' AS field_found, 
      id, 
      title, 
      description, 
      tags 
    FROM DB 
    WHERE title like "%search%" 
    UNION 
    SELECT 'description' AS field_found, 
      id, 
      title, 
      description, 
      tags 
    FROM DB 
    WHERE description LIKE "%search%" 
    UNION 
    SELECT 'tags' AS field_found, 
      id, 
      title, 
      description, 
      tags 
    FROM DB 
    WHERE tags LIKE "%search% 
) sub0 
GROUP BY id, 
     title, 
     description, 
     tags 
+0

謝謝!這真的有幫助! – thomas