Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用SQLite比较不同表中的值_C#_Sqlite - Fatal编程技术网

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

C# 使用SQLite比较不同表中的值,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 Date

我对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;
}
private DateTime GetEndTime()
{
DateTime retVal=new DateTime();
DateTime sa=新的日期时间();
DateTime gps=新的日期时间();
SQLiteCommand cmd=mySQL.CreateCMD();
SQLiteDataReader dbReader=mySQL.ExecuteQuerySQL(“按ROWID DESC LIMIT 1从DF ORDER中选择DateAdded”,cmd);
if(dbReader.HasRows)
{
dbReader.Read();
retVal=dbReader.GetDateTime(0);
}
dbReader.Close();
dbReader=mySQL.ExecuteQuerySQL(“按ROWID DESC LIMIT 1从SA订单中选择DateAdded”,cmd);
if(dbReader.HasRows)
{
dbReader.Read();
sa=dbReader.GetDateTime(0);
}
dbReader.Close();
if(retVal
我知道一定有更好的办法。有什么建议吗

SELECT MAX(DateAdded)
FROM
(
SELECT MAX(DateAdded) AS DateAdded FROM tableA
UNION
SELECT MAX(DateAdded) AS DateAdded FROM tableb
UNION
SELECT MAX(DateAdded) AS DateAdded FROM tablec
)
编辑

我将替换:

Instead of selecting all rows

多亏了@dugas

编辑

我将替换:

Instead of selecting all rows


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

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

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

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

如果表非常大,这会有性能问题吗?如果任何表很大,这可能会有性能问题,因为它会合并所有记录,然后对整个集合进行排序,以获得最大值+1。感谢您的帮助。我接受了另一个答案,因为我怀疑他们只合并日期的方式会更有效。每个表都完全不相关,代表完全不同的信息集。我很懒,在我的示例中,每个表都有两列,但是有很多列。如果表很大,这会有性能问题吗?如果任何表很大,这可能会有性能问题,因为它会合并所有记录,然后对整个集合进行排序,以获得最大值。感谢帮助。我接受了另一个答案,因为我怀疑他们只合并日期的方式会更有效。每个表都完全不相关,代表完全不同的信息集。我很懒,在我的示例中,每个表只显示了两列,但是有很多列。+1,因为这也给了我一些如何节省其他查询的想法。只有一个问题,
UnionedDateAddTables
是什么?子查询的表别名。+1,因为这也给了我一些如何节省其他查询的想法。只有一个问题,UnionedDateAddTables是什么?子查询的表别名。