在SQL Server CE中分析查询时出错



我有一个在Windows Mobile上运行的现有应用程序正在运行SQL Server CE,并且正在使用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]

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

提供的值

(SELECT MAX(P_Inspection.CreateDate) FROM P_Inspection)

来自预先运行的另一个查询。

不能有返回标量值的子查询,但可以返回一个集,因此使用IN而不是相等测试:

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