首页 > 解决方案 > mysql将参数传递给子查询

问题描述

我有这张桌子:

在此处输入图像描述

select a.id, a.title, a.link, a.mclass, b.myids 
from menu a 
left outer join ( select parent, GROUP_CONCAT(id SEPARATOR ',') as myids 
                  from menu 
                  where parent = id 
                  group by parent) b ON a.id = b.parent 
where a.parent='0' and mid='horizontal' 

在此处输入图像描述

我对特殊 id 的内部选择这样做:

select parent, GROUP_CONCAT(id SEPARATOR ',') as myids 
from menu 
where parent = '256'

在此处输入图像描述

无法得到这个结果

在此处输入图像描述

标签: mysqljoinconcatenation

解决方案


您可以对表和聚合进行自联接:

SELECT m1.id, m1.title, m1.link, m1.mclass, 
       GROUP_CONCAT(m2.id) myids 
FROM menu m1 LEFT JOIN menu m2
ON m2.parent = m1.id
WHERE m1.parent = '0' AND m1.mid = 'horizontal'
GROUP BY m1.id, m1.title, m1.link, m1.mclass

推荐阅读