iT邦幫忙

1

找出其他相似的文章?

假設文章有一個欄位叫做 tags 稱他標籤好了~
每一個文章都有類似的標籤,例如

id / blog_title / tags
1 / Hi / 台北,高雄,屏東
2 / 你好 / 台北,高雄
3 / 早安 / 屏東,彰化

我想要利用 tags 找出其他有跟這篇文章相似的文章
假設我現在在瀏覽 文章1 好了
下面會出現一個延伸閱讀,他會找到有跟他類似標籤的文章並顯示
所以他會顯示 文章2 跟 文章3
如果瀏覽 文章2 ,則只會顯示 文章1 為他的延伸閱讀
如果瀏覽 文章3 ,則只會顯示 文章1 為他的延伸閱讀

SELECT blog_title FROM `blog`
        WHERE tags LIKE '%{ ??? }%'
        LIMIT 3

我能用何種函數在 mysql 中,就能做到這種比對?

1 個回答

2
rogeryao
iT邦研究生 5 級 ‧ 2018-10-21 23:54:05
最佳解答

SELECT id,blog_title FROM blog
WHERE tags REGEXP (
SELECT replace(tags,',','|') FROM blog
where 1=1
and id=1
)
and id <> 1

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=d56e5b8bf6c5f2125e2cc847f4183b32

看更多先前的回應...收起先前的回應...
asys0512 iT邦研究生 5 級 ‧ 2018-10-22 13:15:33 檢舉

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LIMIT 0, 25' at line 2

asys0512 iT邦研究生 5 級 ‧ 2018-10-22 13:18:49 檢舉

分析過程中發生 5 個錯誤。

無法辨識的關鍵字。 (near "RLIKE" at position 50)
無法辨識的關鍵字。 (near "CONCAT" at position 59)
預期之外的符號。 (near "(" at position 65)
預期之外的符號。 (near "'[[:<:]]'" at position 66)
預期之外的符號。 (near "," at position 75)

rogeryao iT邦研究生 5 級 ‧ 2018-10-22 17:18:34 檢舉

上面的 SQL 指令沒有 "RLIKE" ,也沒有 "CONCAT"

asys0512 iT邦研究生 5 級 ‧ 2018-10-23 17:09:44 檢舉

貼錯

無法辨識的關鍵字。 (near "REGEXP" at position 43)
預期之外的符號。 (near "(" at position 50)

asys0512 iT邦研究生 5 級 ‧ 2018-10-23 17:14:01 檢舉

我想做到的是
文章用自己的標籤找到其他相似標籤的文章
我有用 foreach + while 實現,但是這樣文章數會變兩倍...所以不work

我要發表回答

立即登入回答