在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
子句来利用这种比较?
试试这个:
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;