这是我的表/实体:

articles
- id
- title
- body

keywords
- id
- fk_article_id
- title

一篇文章可以有多个关键字(一对多关系,而不是多对多)。可以有1,2,3,4,5,6,7,8,9。。。属于一篇文章的关键字。
选择一篇文章的标题和正文以及所有关键词的标题的最佳方法是什么?
结果示例:
- article.title
- article.body
-- keyword1.title
-- keyword2.title
-- keyword3.title

如果我做一个内部连接,那么我将获得相同的文章标题和正文两次。这可以用GROUP BY完成吗?还是应该使用嵌套语句?
我尝试过的内部连接,但显然不是正确的解决方案:
SELECT articles.title, articles.body, keywords.title
FROM articles
INNER JOIN keywords
ON articles.id = keywords.fk_article_id
WHERE articles.id = 1

最佳答案

作为样本假设你有

articles
id   | title | body
----  -----   -----
1    | Harry Potter | text
2    | LOTR | text text

keywords
id   | title
----  -----
1    |  magic
1    |  stick
2    | dwarf
2    | ring

如果执行以下查询
Select a.title,a.body,group_concat(k.title ) from articles a JOIN keywords k ON a.id=k.id group by a.id

它会回来的
哈利波特(魔法,棍子)
洛特(矮人,戒指)

关于mysql - 如何获取table1的所有列和table2的所有行属于table1?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40673156/

10-13 08:14
查看更多