10张表,表结构一模一样,编号为IN01到IN10,怎么在db里面通过查询语句一次查回的满足表中字段AGE大于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
只用查询sql的话,你这个需求肯定只能用union all
如果可以用函数或者存储过程的话,倒是可以拼接动态sql来执行,但实际上拼出来的动态sql还是有这么长,只是不用自己手敲这么长了。
还有,不同数据库的写法以及支持的功能也不一样,你没说清楚是什么数据库。
另外,楼上专家的写法我是不建议的,这种写法可能不会执行谓词内推,导致是先把所有表的所有记录读到内存里,再来过滤年龄,应该要把这个过滤条件写到每个表里去,最后再union all,这样占用内存更小