数据库有N个以某种格式开头的表(例如:LOG_INFO_XXX),表结构完全一样
现在我想查询出这些表中的2个字段的组合表
我的写法如下:(还有LOG_INFO_N003,LOG_INFO_N004.。。。等共10个表)
SELECT
ROW_NUMBER() OVER(ORDER BY GETDATE()) id,
[P001],
[S001]
FROM
(
SELECT
[P001],
[S001]
FROM
[LOG_INFO_N001]
GROUP BY
[P001],
[S001]
UNION ALL
SELECT
[P001],
[S001]
FROM
[LOG_INFO_N002]
GROUP BY
[P001],
[S001]
) t;
按照我这样来写的话,就必须用UNION一直往下接,想请问下:
1、这样写会不会查询速度很慢,有什么提高速度的办法
2、有没有简洁的写法,动态获取表名(有前缀规则可筛选表,前缀为:LOG_INFO)之类的。
万分感谢~~
------解决方案--------------------
select name from sys.tables where name like 'LOG_INFO%'
------解决方案--------------------
select name from sysobjects where name like '%LOG_INFO%'
------解决方案--------------------
我只能想出一个一个写。
1楼的混分呢?