求一条sql语句,替换现在的 IN()的查询方式

0
分类表:
字段 id, name, parentid, arrchild

CREATE TABLE `category` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  `parentid` int(10) unsigned NOT NULL,
  `arrchild` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

文章表:
nid, title, catid
CREATE TABLE `news` (
  `nid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`catid` int(10)  unsigned NOT NULL,
  `title` varchar(255) NOT NULL COMMENT '标题',
  PRIMARY KEY (`nid`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

文章表 catid 对应 分类表的 id。 目前我把每一个分类自己以及它的子分类, 都以 1,2,3,4,5 这种格式存储在 arrchild中的,
用 in (1,2,3,4,5) 来查询完成的。但是数据大了 应该性能很低。

有没有高手 帮帮忙, 查询 category表中 一个分类下(包括子分类)的所有的文章。
已邀请:
1

- 取是能力,舍是境界 2015-11-25 回答

先提示下,你自己尝试去完成,也可以去看下我的博客。
 
分类表用With as 表表达式 递归获取所有无限级子类
 
然后连接文章表。

要回复问题请先登录注册