如何在单条SQL查询中读取同库两表数据并加载至VB.Net DataGridView?
当然可行!无需执行两条独立查询
完全可以通过SQL的合并查询语句,一次性从两张表中获取数据并返回一个统一的数据集,直接加载到你的VB.Net DataGridView里,省掉两次查询的麻烦。
具体实现方法
因为你的两张表PD_All_FT和PD_All_ST的查询字段(DateAndTime, Millitm, TagIndex, Val)结构完全一致,刚好可以用UNION ALL来合并结果:
SELECT DateAndTime, Millitm, TagIndex, Val FROM PD_All_FT WHERE (DateAndTime = '2019-01-30 07:59:58.000') AND (Millitm = 597) UNION ALL SELECT DateAndTime, Millitm, TagIndex, Val FROM PD_All_ST WHERE (DateAndTime = '2019-01-30 07:59:58.000') AND (Millitm = 597) ORDER BY DateAndTime DESC
小细节说明
UNION ALLvsUNION:如果两张表不会出现完全重复的记录(或者你不需要去重),优先用UNION ALL,它的执行效率更高;如果需要自动剔除两张表中完全相同的行,就把UNION ALL换成UNION。- 筛选条件:两张表的
WHERE条件可以根据需求调整,不一定必须一致,各自写对应的筛选逻辑就行。 - 排序:
ORDER BY要放在整个语句的最后,作用于合并后的所有数据,而不是单表结果。
VB.Net端的使用
和你之前处理单表查询的流程完全一样:把上面的SQL语句作为查询命令,执行后将结果填充到DataTable,再把DataTable绑定到DataGridView即可,不需要额外处理两次查询结果的合并操作。
内容的提问来源于stack exchange,提问作者MHammer
相关产品推荐
相关产品推荐

