c# - 使用 SQLite 比较不同表中的值

标签 c# sqlite

我对 SQLite 和更具体的 SQL 还是个新手,所以请放轻松。我的 SQLite 数据库中有三个表,它们看起来像这样:

TableA
DateAdded  Data1  Data2
1/1/2012   a      b
1/3/2012   c      d
1/2/2012   e      f

TableB
DateAdded  Data3  Data4
1/6/2012   g      h
1/5/2012   i      j
1/4/2012   k      l

TableC
DateAdded  Data5  Data6
1/8/2012   m      n
1/9/2012   o      p
1/7/2012   q      r

每个表都有一个 DateAdded 列,它是 datetime 数据类型。我想获取所有三个表的最新 datetime 值。

现在我一次做一个表并比较结果:

private DateTime GetEndTime()
{
    DateTime retVal = new DateTime();
    DateTime sa = new DateTime();
    DateTime gps = new DateTime();

    SQLiteCommand cmd = mySQL.CreateCMD();
    SQLiteDataReader dbReader = mySQL.ExecuteQuerySQL("SELECT DateAdded FROM DF ORDER BY ROWID DESC LIMIT 1", cmd);
    if (dbReader.HasRows)
    {
        dbReader.Read();
        retVal = dbReader.GetDateTime(0);
    }
    dbReader.Close();

    dbReader = mySQL.ExecuteQuerySQL("SELECT DateAdded FROM SA ORDER BY ROWID DESC LIMIT 1", cmd);
    if (dbReader.HasRows)
    {
        dbReader.Read();
        sa = dbReader.GetDateTime(0);
    }
    dbReader.Close();

    if (retVal < sa)
        retVal = sa;

    dbReader = mySQL.ExecuteQuerySQL("SELECT DateAdded FROM GPS ORDER BY ROWID DESC LIMIT 1", cmd);
    if (dbReader.HasRows)
    {
        dbReader.Read();
        gps = dbReader.GetDateTime(0);
    }
    dbReader.Close();
    mySQL.disposeCMD(cmd);

    if (retVal < gps)
        retVal = gps;

    return retVal;
}

知道一定有更好的方法。有什么建议吗?

最佳答案

您可以从每个表中选择最大添加日期,然后合并这些行并选择最大值,如下所示:

select MAX(MaxDateAdded) from
(
 select MAX(DateAdded) as MaxDateAdded from a 
 union
 select MAX(DateAdded) as MaxDateAdded from b
 union
 select MAX(DateAdded) as MaxDateAdded from c
) AS UnionedDateAddedTables

关于c# - 使用 SQLite 比较不同表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12678555/

相关文章:

c# - 模拟 IList 的单元测试方法

c# - 如何重命名 XSD.exe 生成的枚举 ItemsChoiceType?

c# - 在 Visual Studio 中的设计时列出所有公共(public)类属性和字段

c# - Azure 数据工厂将消息发布到 Azure 存储队列失败

iphone - 将数据从 .csv 文件导入到 IOS 中的 sqlite 数据库。 FM数据库

ios - 插入 sqlite 数据库花费太多时间 - iOS

javascript - 无法更改在 UpdatePanel 内创建的 JavaScript 变量

android - Android SQLite 修正中的创建表语法

c# - SQLite.net 多线程

java - 使用 javafx 将日期保存到 SQLite 数据库错误