gpt4 book ai didi

MySQL 查询从给定父级的子类别中获取标题

转载 作者:行者123 更新时间:2023-11-29 13:20:16 25 4
gpt4 key购买 nike

我有一个这样的数据库结构

CATEGORIES
ID | parent_id | name
1 | 0 | sports
2 | 1 | football
3 | 1 | tennis
4 | 0 | activities
5 | 4 | hiking
etc.


NEWS
ID | category_id | title | date | etc
1 | 2 | Football is great | 2012-12-21 |
2 | 3 | Tennis is healthy | 2012-11-13 |
3 | 5 | Go on hiking | 2013-11-15 |

现在,当我想获取“体育”子类别的标题(标题)时,实现此目的的最佳方法是什么?

我正在考虑执行多个查询(本例中为 3 个)。

首先,获取“Sports”的所有子项

SELECT * FROM categories WHERE parent_id = 1

然后,对每个结果进行查询以获取每个子类别的标题。

SELECT * FROM news WHERE category_id = (result from query above)

在此示例中,将执行 3 个查询。 (一个用于获取所有子类别。本例中有两个子类别,因此将对新闻表执行两个查询。总共 3 个。)

或者是否有更聪明(更有效)的方法来做到这一点?也许 1 个查询?

最佳答案

您应该能够使用 INNER JOIN 通过一个查询来完成此操作

SELECT NEWS.*, CATEGORIES.name 
FROM NEWS
INNER JOIN CATEGORIES ON NEWS.category_id = CATEGORIES.ID

您还可以使用LEFT JOIN编写查询。这将允许您列出所有类别,包括那些没有新闻文章的类别。

SELECT categories.name as Category_Name, news.*
FROM categories
LEFT JOIN news ON news.category_id = categories.ID

我已将其放入 SQL Fiddle 中以帮助演示:http://sqlfiddle.com/#!2/9c1b3/6

关于MySQL 查询从给定父级的子类别中获取标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20934923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com