Mysql 从cat_表中选择类别,其中主_表项目的类别不为空

Mysql 从cat_表中选择类别,其中主_表项目的类别不为空,mysql,select,join,group-by,Mysql,Select,Join,Group By,我想不出正确的表达方式,也许如果我知道正确的表达方式,我可以用谷歌搜索它,但到目前为止我还在努力 我有两个表:类别、目录 在用户选择类别的页面上,我只想显示具有该类别的目录项存在的类别 我想知道我是否可以加入并尝试 SELECT wedding_directory_cats.id, wedding_directory_cats.name, wedding_directory.id AS d_id FROM wedding_directory_cats JOIN wedding_directory

我想不出正确的表达方式,也许如果我知道正确的表达方式,我可以用谷歌搜索它,但到目前为止我还在努力

我有两个表:类别、目录

在用户选择类别的页面上,我只想显示具有该类别的目录项存在的类别

我想知道我是否可以加入并尝试

SELECT
wedding_directory_cats.id,
wedding_directory_cats.name,
wedding_directory.id AS d_id
FROM wedding_directory_cats
JOIN wedding_directory ON wedding_directory.category = wedding_directory_cats.id
但这将返回每个目录项的类别,因此我不止一次地使用相同的类别。就在我写这篇文章的时候,我开始认为我可以在最后使用GROUP BY,但这仍然意味着它必须先返回所有数据,然后再分组,这样做效率低还是有更好的方法?如果您有任何疑问,请尝试以下方法:

SELECT wdc.id, wdc.name, wd.id AS d_id
FROM wedding_directory_cats wdc
INNER JOIN (SELECT id, category FROM wedding_directory GROUP BY category) wd ON wdc.id = wd.category ;

SELECT wdc.id, wdc.name, GROUP_CONCAT(wd.id) AS d_id
FROM wedding_directory_cats wdc
INNER JOIN wedding_directory wd ON wdc.id = wd.category 
GROUP BY wd.category;
试试这个:

SELECT wdc.id, wdc.name, wd.id AS d_id
FROM wedding_directory_cats wdc
INNER JOIN (SELECT id, category FROM wedding_directory GROUP BY category) wd ON wdc.id = wd.category ;

SELECT wdc.id, wdc.name, GROUP_CONCAT(wd.id) AS d_id
FROM wedding_directory_cats wdc
INNER JOIN wedding_directory wd ON wdc.id = wd.category 
GROUP BY wd.category;

用样本数据和输出解释用样本数据和输出解释