C# 分析SQL Server CE中的查询时出错

C# 分析SQL Server CE中的查询时出错,c#,sql,windows-mobile,sql-server-ce,C#,Sql,Windows Mobile,Sql Server Ce,我有一个运行在WindowsMobile上的运行SQLServerCE的现有应用程序,正在使用C语言的内联查询。这是我在Management Studio中正确运行的查询: command = @"SELECT P_InspectionStep.InspectionStepID, P_InspectionStep.Sequence AS Sequence, P_InspectionStep.Tit

我有一个运行在WindowsMobile上的运行SQLServerCE的现有应用程序,正在使用C语言的内联查询。这是我在Management Studio中正确运行的查询:

command = @"SELECT  
                P_InspectionStep.InspectionStepID,
                P_InspectionStep.Sequence AS Sequence,
                P_InspectionStep.Title AS Title,
                P_InspectionStep.Body AS Body,
                P_InspectionStep.Photo AS Photo,
                P_Inspection.RevisionID
            FROM
                P_InspectionStep
            LEFT JOIN 
                P_Inspection ON P_Inspection.InspectionID = P_InspectionStep.InspectionID
            WHERE 
                P_Inspection.InspectionID = '" + mInspectionID + "'" +
                @"AND P_Inspection.CreateDate = (SELECT MAX(P_Inspection.CreateDate) FROM P_Inspection)

            UNION ALL

            SELECT
                C_InspectionStep.InspectionStepID,
                C_InspectionStep.Sequence AS Sequence,
                C_InspectionStep.Title AS Title,
                C_InspectionStep.Body AS Body,
                C_InspectionStep.Photo AS Photo,
                C_Inspection.RevisionID
            FROM 
                C_InspectionStep
            LEFT JOIN 
                C_Inspection ON C_Inspection.RevisionID = C_InspectionStep.RevisionID
            WHERE 
                C_Inspection.InspectionID = '" + mInspectionID + "'" +
                @"AND C_Inspection.CreateDate = (SELECT MAX(C_Inspection.CreateDate) FROM C_Inspection)
            ORDER BY 2;";
但在应用程序中运行它会返回以下SqlCeException:

分析查询时出错。[令牌行编号=10,令牌行偏移量=132,令牌出错=选择]

我已经做了很多搜索,但找不到如何解决这个问题。

提供

(SELECT MAX(P_Inspection.CreateDate) FROM P_Inspection)

从另一个查询中提前运行。

您不能有返回标量值的子查询,但可以返回一个集合,以便在中使用而不是相等测试:

... C_Inspection.CreateDate IN (SELECT MAX(C_Inspection.CreateDate) FROM C_Inspection)

我尝试了这一点,但在应用程序exe中出现了一个本机异常,我无法用调试器捕获该异常。看起来像是读卡器的移动方向。我将命令值复制到一个sql查询窗口中,它返回的数据很好。这个解决方案还导致了我在@Alex K.solution中描述的本机异常。