Pep*_*hon 3 mysql select many-to-many subquery sql-like
我有2个表:一个存储标签,另一个存储文章.有一种模式"按标签获取文章",它基本上采用标记为"x"的所有文章.在我的文章表中,我使用了一个名为Tags"tag1,tag2,tag3,..."模式的数据.
所以我想通过一个像这样的查询来完成所有工作:
SELECT *,
(SELECT tagname
FROM `tags_table`
WHERE tagurn LIKE 'x') as TAGNAME
FROM `articles_table`
WHERE (Tags LIKE 'TAGNAME,%' OR Tags LIKE '%, TAGNAME' ... and so on)
Run Code Online (Sandbox Code Playgroud)
我不知道它是否可能,但我真的想使用单个查询(带有子查询)而不是两个不同的查询.
这是在数据库中存储多对多关系的错误方法.
你应该有一个类似的架构:
articles: [PK] article_id, ... (should have no reference to tags)
tags: [PK] tag_id, tag_name, ...
articles_tags: [FK] article_id, [FK] tag_id
Run Code Online (Sandbox Code Playgroud)
[PK]=主键,[FK]=外键
哪里articles_tags是结表.现在,你可以获得带有给定标签的所有文章(如果你知道tag_id你甚至不需要JOIN):
SELECT article_id, ...
FROM articles_tags
INNER JOIN tags ON tags.tag_id = articles_tags.tag_id
WHERE tag_name = 'TAGNAME'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |