现在有一个小说信息表A(只是小说的汇总信息),小说的章节信息会放在小说id%100的那张表B上(比如A表小说id为1245,那它的章节数据就会放在chapter_45这张表上,小说信息会以id随机分布在100张上),现在我想查寻出以B表上章节数量(count(*))倒序排列的A表小说信息,我写了sql语句:select i.id,i.siteid,count(*) as s from ptcms_novelsearch_info as i join ptcms_novelsearch_chapter_i.id%100 as c on c.novelid = i.id and c.siteid=i.siteid GROUP BY i.id order by s desc limit 20
;
会报%100语法错误的错,因为章节表没法确定(有100个小说章节信息表),求大神解答如何实现这一需求
这个就是水平分表的概念了吧 直接去一个实例的一个库查100张表的信息你必须union所有的表去查 因为你不知道哪些表保存的是你要的数据 mysql自己就更不知道了 这显然是不合理的 所以你这样的业务模式应该使用分表处理 比如借助mycat A和B表都按照小说id分表,你只需要在mycat里配置好 然后直接select A join B on A.id=B.id即可
由于表名是变量,不能直接使用.你应该使用动态sql去拼接sql语句.