在SQL Server CE 4.0中使用COUNT进行比较

本文关键字:COUNT 比较 Server SQL CE | 更新日期: 2023-09-27 17:58:59

我正在尝试组合一些SQL查询的逻辑,但我似乎无法解决这个问题。显然,与SQL Server或mySQL相比,SQL Server CE有很多局限性,但肯定有办法解决这个问题。

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

假设数据库的模型如下:

Table1:

ID int
Key string
NumberInUse int

Table2:

ID int
OtherID int

以下是查询的必要部分。

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,错误令牌=SELECT]`

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

在SQL Server CE 4.0中使用COUNT进行比较

试试这个:

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

当然不是SQL。您缺少第二个LEFT JOIN:的右操作数

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;