我有 3 张桌子,正在恢复它们:
:::NEWS:::
ID | TITLE
1 | New A
2 | New B
:::TAGTONEW:::
NEWID | TAGID
1 | 1
1 | 2
2 | 2
2 | 3
:::TAGS:::
ID | TAG
1 | religion
2 | sport
3 | politic
这样做的目的是搜索与给定标签列表匹配的新闻(例如带有标签运动和宗教的新闻)。行。问题是当我做类似的事情时:
SELECT * FROM news JOIN tagtonew ON news.id = newid JOIN tags ON tagid = tags.id
WHERE tag IN ('religion','sport');
结果将是 3 行,其中 2 行重复New A
. 好的,我可以使用GROUP BY news.id
只获取一行,但问题是我需要返回与 New A 匹配的所有标签(我需要返回 New A 与体育和宗教有关),我该怎么做?请求新人?提前致谢。
编辑
上面的结果将是:
New A - religion
New A - sport
New B - sport
如果我组会是这样的:
New A - religion
New B - sport
但我需要知道 A 也与运动有关,因为我需要以 JSON 格式返回它。所以我需要输出是这样的:
New A - (religion, sport)
New B - sport