我有三张这样的表格:
:Manga
| id | title | author |
|----+-----------+-----------------|
| 1 | Initial D | Yuki Urushibara |
:Tags :Manga_Tags_Association
| id | name | | tag_id | manga_id |
|----+--------| |--------+----------|
| 1 | racing | | 1 | 1 |
| 2 | sports | | 2 | 1 |
| 3 | chill | | 3 | 23 |
| 1 | 5 |
其中第三个表示漫画条目和标签之间的关联(因此'Initial D'
被标记为'racing'
和'sports'
我已经用不同的方式搜索和过滤了一些查询,但是我在返回这样的结果时,很难通过一个标签进行过滤,保留了 * 所有 * 与标签相关的标签:
| M.id | M.title | tags |
|------+-----------+-----------------------|
| 1 | Initial D | racing, sports |
| 55 | REDLINE | sports, racing, scifi |
如果我正在过滤等于'racing'
的标签,我该怎么做呢?我的尝试要么排除所有不是结果中指定的标签,看起来像这样...
| M.id | M.title | tags |
|------+-----------+--------|
| 1 | Initial D | racing |
| 55 | REDLINE | racing |
......或者根本不起作用,就像我试过的那些,我以为我可以检查GROUP_CONCAT
的内容(SELECT ..., GROUP_CONCAT(Tags.title) AS AllTags ... something something ''racing' IN AllTags;)
,因为它不是一个表。我也不能通过执行一个子查询来完成这一点,该子查询列出了与Manga.id
相关的所有标记,并检查是否有任何行包含'racing'
,因为我不知道这是不是可能的(我找不到方法)。也不使用HAVING 'racing' IN
一个别名为AllTags
的子查询(和以前一样的问题,它抱怨 * 它不是一个表 *)。
编辑:好的,我刚刚看到了一些关于windows的东西,我正在尝试。
1条答案
按热度按时间zsbz8rwp1#
连接表,聚合并在
HAVING
子句中设置条件: