DB多表查询,多个表结构一样,怎么一次查回

10张表,表结构一模一样,编号为IN01到IN10,怎么在db里面通过查询语句一次查回的满足表中字段AGE大于10的所有记录

两个方法

  1. 用 union all 联合 10张表
    SELECT * FROM (
    SELECT * FROM IN01
    UNION ALL
    SELECT * FROM IN02
    UNION ALL
    SELECT * FROM IN03
    UNION ALL
    SELECT * FROM IN04
    UNION ALL
    SELECT * FROM IN05
    UNION ALL
    SELECT * FROM IN06
    UNION ALL
    SELECT * FROM IN07
    UNION ALL
    SELECT * FROM IN08
    UNION ALL
    SELECT * FROM IN09
    UNION ALL
    SELECT * FROM IN10
    ) AS IN_ALL WHERE AGE > 10
    
  2. 用 mrg_myisam 表来聚合表

只用查询sql的话,你这个需求肯定只能用union all
如果可以用函数或者存储过程的话,倒是可以拼接动态sql来执行,但实际上拼出来的动态sql还是有这么长,只是不用自己手敲这么长了。
还有,不同数据库的写法以及支持的功能也不一样,你没说清楚是什么数据库。
另外,楼上专家的写法我是不建议的,这种写法可能不会执行谓词内推,导致是先把所有表的所有记录读到内存里,再来过滤年龄,应该要把这个过滤条件写到每个表里去,最后再union all,这样占用内存更小

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632