[英]Retrievng related posts by tags
我有一個這樣構造的posts
表:
id | title | content | tags
和一個tags
表
id | name | description
我以這種方式將我的標簽放在posts
表中: 3,2,5,8
其中數字是tags
表的相應行號。 現在,我可以通過標簽找到我帖子中 select 相關帖子的好方法嗎?
SELECT * FROM posts WHERE tags ? LIMIT 10
我的邏輯很差。
這就是數據庫規范化的用武之地。在單個列中存儲多個標簽 ID 不是一個好主意。 您可能應該創建一個新表post_tags
,其結構為post_id | tag_id
post_id | tag_id
將多個標簽鏈接到單個帖子。
然后您可以執行以下查詢:
SELECT * FROM posts
INNER JOIN post_tags ON post_tags.post_id = posts.id
WHERE post_tags.tag_id IN(id1,id2,etc.)
你最好改變你的數據庫設計。 為帖子和標簽的關系創建一個新表。
create table post_tags (
post_id int,
tag_id int
)
然后你可以使用 join to select 你的數據,比如:
SELECT
p.*
FROM
posts p
LEFT JOIN
post_tags pt ON p.id = pt.post_id
WHERE
pt.tag_id IN (?,?,?)
SELECT * FROM posts WHERE tags IN ( YOUR_COMMA_SEPRATED_TAG_IDS );
YOUR_COMMA_SEPRATED_TAG_IDS
可以是:- 1 OR 1,2,3 或任何其他...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.