如何在一个结果中从多个库的表中选择信息。我的想法是将它们放在DataTable中并在DataGrid中显示它们。
这是查询:
exec sp_msforeachdb 'use ?; IF ''?'' <> ''master'' AND ''?'' <> ''model'' AND ''?'' <> ''msdb'' AND ''?'' <> ''tempdb'' AND ''?'' <> ''addresses'' AND ''?'' <> ''ikamebeldizain'' AND ''?'' <> ''new2'' AND ''?'' <> ''sample'' AND ''?'' <> ''sitedatabase'' AND ''?'' <> ''StudentsTeachersTest'' AND ''?'' <> ''MicroinvestDatabasesCatalog'' select * from dbo.system;'
当我在 dataGrid 中尝试使用此查询时,我只有一行(第一个结果)。
最佳答案
要在 SQL 中附加多个结果集,您需要具有相同的结果结构(即:以相同的顺序返回相同的列),并告诉 SQL 使用 union all
将它们连接在一起(仅使用 union
将删除重复的行)。要跨不同数据库执行此操作,假设它们位于同一服务器上,您只需在查询中引用数据库即可:
select *
from Database1.dbo.system
union all
select *
from Database2.dbo.system
如果您尝试跨一组动态数据库执行此操作,则只能使用动态 SQL 来执行此操作,动态 SQL 将根据脚本中前面提供的数据库列表输出上述语句,您可以然后执行。
关于c# - 从多个基础的表中选择信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48708688/