复杂的子查询 - 这可能吗?

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)

我不知道它是否可能,但我真的想使用单个查询(带有子查询)而不是两个不同的查询.

Nul*_*ion 6

这是在数据库中存储多对多关系的错误方法.

你应该有一个类似的架构:

     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)