首页 新闻 会员 周边 捐助

如何从多张数据表中查询数据

0
悬赏园豆:100 [已解决问题] 解决于 2022-12-07 22:48

我需要从一百多张表中检索一条数据,每张表列名都是id,c1,c2。每张表有数据500万行,第一张表id范围是1-500万,第二张表是500万零1到一千万,依次类推。我该怎么样用sql来查询其中的一条数据呢?(比如说我给出c1或者id,现在要查询c2。c1是不知道在哪张表中的,所以要在所有的表中查询结果,我希望有一个简便的方法来查询)

问题补充:

我现在想要通过c1来查询c2的话用的是下面的方法。可是总共有一百多行,虽然我可以直接用程序生成这个命令然后进行查询,但是,我想问问有没有什么更简便的方法。 

SELECT * FROM table1 WHERE c1='test' UNION
SELECT * FROM table2 WHERE c1='test' UNION
SELECT * FROM table3 WHERE c1='test' UNION
SELECT * FROM table4 WHERE c1='test' UNION
SELECT * FROM table5 WHERE c1='test' ;
KHDXS7的主页 KHDXS7 | 初学一级 | 园豆:53
提问于:2022-12-07 11:57
< >
分享
最佳答案
1

没有办法,都不知道在哪个表,只能都查。或者你可以把经常查的数据在哪个表的信息记录下来。

你们的表类似于分区表,分的时候肯定要根据一些规则吧,看样子你们是根据id来划分的。也可以根据某些常用的条件重新分下区。

收获园豆:50
会长 | 专家六级 |园豆:12463 | 2022-12-07 14:47

好吧,只能这样了。感谢你的回答。

KHDXS7 | 园豆:53 (初学一级) | 2022-12-07 14:50
其他回答(1)
1

select c2 from table 1 where id = ''
union all
select c2 from table 2 where id = ''
union all
select c2 from table 3 where id = ''
直接union all查询,或者能够确定数据范围,就能指定对应表了

收获园豆:50
按时睡觉。 | 园豆:190 (初学一级) | 2022-12-07 14:25

感谢你的回答。如果需要通过id查询的话,可以先通过id范围来查询表。比如说id是10,我可以先查询id=10的数据在那张表中,然后再查询那一张表就可以了。但是如果要指定c1来查询的话,c1没什么规律,我是用的补充里的方法查询的。

支持(0) 反对(0) KHDXS7 | 园豆:53 (初学一级) | 2022-12-07 14:48

@KHDXS7: 通过c1加索引 union all查询也很快的

支持(0) 反对(0) 按时睡觉。 | 园豆:190 (初学一级) | 2022-12-07 15:06

@我恰芙蓉王: 感谢你的建议,我对c1建立了索引。查询使用的UNION ALL,不用进行再次筛选会比UNION快点。整体上速度快了一大截。非常感谢你的建议。

支持(0) 反对(0) KHDXS7 | 园豆:53 (初学一级) | 2022-12-07 22:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册