C# 在SQL Server CE 4.0中使用计数进行比较

C# 在SQL Server CE 4.0中使用计数进行比较,c#,count,sql-server-ce,sql-server-ce-4,C#,Count,Sql Server Ce,Sql Server Ce 4,我试图将一些SQL查询的逻辑结合起来,但我似乎无法解决这个问题。显然,与SQLServer或mySQL相比,SQLServerCE有很多局限性,但肯定有办法解决这个问题 我想根据一些参数对数据库中的一个表进行计数,然后将该值与另一个表中存储在列中的值进行比较 假设数据库建模如下: 表1: 表2: 以下是查询的必要部分 SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.ID = Table2.ID WHERE Table1.Key = @key A

我试图将一些SQL查询的逻辑结合起来,但我似乎无法解决这个问题。显然,与SQLServer或mySQL相比,SQLServerCE有很多局限性,但肯定有办法解决这个问题

我想根据一些参数对数据库中的一个表进行计数,然后将该值与另一个表中存储在列中的值进行比较

假设数据库建模如下:

表1:

表2:

以下是查询的必要部分

SELECT * 
FROM Table1 
LEFT JOIN Table2 ON Table1.ID = Table2.ID
WHERE Table1.Key = @key
AND (SELECT COUNT(*) FROM Table2 WHERE ID = Table1.ID AND OtherID = @otherID) < Table1.NumberInUse;
不幸的是,此查询导致以下错误:

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


那么,有没有一种方法可以重新表述查询的WHERE子句以利用这种比较?

确定它不是SQL。缺少第二个左联接的右操作数:

试试这个:

SELECT * 
FROM Table1 t1
INNER JOIN (SELECT ID
                  ,COUNT(*) numCount
              FROM Table2 t2
             WHERE t2.OtherId = @otherID
             GROUP BY ID) t3
   ON t1.ID = t3.ID
 WHERE t1.Key = @Key
   AND t3.numCount < t1.NumberInUse

我已经纠正了原来的疑问。很抱歉,我切碎了一个更大的查询,删除了相关部分,并意外地将连接留在了那里。
SELECT * 
FROM Table1 
LEFT JOIN Table2 ON Table1.ID = Table2.ID
WHERE Table1.Key = @key
AND (SELECT COUNT(*) FROM Table2 WHERE ID = Table1.ID AND OtherID = @otherID) < Table1.NumberInUse;
SELECT *
FROM Table1 LEFT JOIN Table2
    ON Table1.ID = Table2.ID
    LEFT JOIN ????? WHUT ?????
WHERE Table1.Key = @key
AND (SELECT COUNT(*) FROM Table2 WHERE ID = Table1.ID AND OtherID = @otherID) < Table1.NumberInUse;
SELECT * 
FROM Table1 t1
INNER JOIN (SELECT ID
                  ,COUNT(*) numCount
              FROM Table2 t2
             WHERE t2.OtherId = @otherID
             GROUP BY ID) t3
   ON t1.ID = t3.ID
 WHERE t1.Key = @Key
   AND t3.numCount < t1.NumberInUse