C# 比较多个表
在我的工作场所有一个可怕的遗留工具,它已被更新/修补以将信息输出到SQLite数据库。没有人想触及系统的后端,我也不知道如何深入研究——这不是我的问题。然而,我的问题是: 我有一个SQLite数据库,其中有许多表。每个表表示一天,包含所有公交车运行,如下所示:C# 比较多个表,c#,sqlite,datatable,C#,Sqlite,Datatable,在我的工作场所有一个可怕的遗留工具,它已被更新/修补以将信息输出到SQLite数据库。没有人想触及系统的后端,我也不知道如何深入研究——这不是我的问题。然而,我的问题是: 我有一个SQLite数据库,其中有许多表。每个表表示一天,包含所有公交车运行,如下所示: | Direction | Time | RunNumber | StopIndex | ---------------------------------------------- | In | 6:30
| Direction | Time | RunNumber | StopIndex |
----------------------------------------------
| In | 6:30 | 1 | 1 |
| In | 6:35 | 1 | 2 |
| In | 6:40 | 1 | 3 |
| In | 6:45 | 1 | 4 |
| In | 7:30 | 2 | 1 |
| In | 7:35 | 2 | 2 |
| In | 7:40 | 2 | 3 |
| In | 7:45 | 2 | 4 |
| Out | 6:40 | 1 | 1 |
| Out | 6:45 | 1 | 2 |
| Out | 6:50 | 1 | 3 |
| Out | 6:55 | 1 | 4 |
有些日子跑步次数可能比其他日子多。所有表中的站点数都将相同
相等的定义是方向和时间都相同。每次运行都被视为一个集合-如果停止的某个时间不同,则需要将整个运行合并到一个表中
我的问题是:
给定一个表列表,生成另一个包含所有给定表上不存在的值的表的最简单方法是什么?这可以在SQLite端完成,也可以通过C#.NET 4.0完成
实际上,我只需要知道不同的运行编号,这样我就可以在以后提取它并将其放入Excel电子表格,如果这样做更容易的话。尝试使用EXCEPT。例如,以下查询将列出表1中存在但表2中不存在的所有行:
SELECT Direction, Time, RunNumber, StopIndex
FROM Table1
EXCEPT
SELECT Direction, Time, RunNumber, StopIndex
FROM Table2
有没有办法在选择较少的标准上做到这一点?我的问题是,表中的任何位置都可能插入另一个trip,这会导致后续每次trip的RunNumber为n+1。使用此方法会返回加法后的每一行,因为RunNumber为n+1(或插入的运行次数)。