Sql 如何引用多个列';子查询中的值?
我已尝试在SQL Server 2012中运行以下说明:Sql 如何引用多个列';子查询中的值?,sql,postgresql,sql-server-2012,Sql,Postgresql,Sql Server 2012,我已尝试在SQL Server 2012中运行以下说明: SELECT ID, Title from Movies where categoryID = 1 and (MovieID,1) in (select MovieID, count(ID) from Copies group by (MovieID)) 但会引发以下错误消息: * Msg 4145,第15级,状态1,第3行 在“,”附近预期条件的上下文中指定的非布尔型表
SELECT ID, Title
from Movies
where categoryID = 1 and (MovieID,1) in
(select MovieID, count(ID)
from Copies
group by (MovieID))
但会引发以下错误消息:
*
Msg 4145,第15级,状态1,第3行
在“,”附近预期条件的上下文中指定的非布尔型表达式*
我知道这个查询在PostgreSQL中运行得非常好。为了在SQL Server 2012中正常运行,我应该更改哪些内容?您应该可以使用标准联接语法来执行此操作:
SELECT m.ID, m.Title
FROM Movies m
INNER JOIN (
SELECT c.MovieID FROM Copies c GROUP BY c.MovieID HAVING COUNT(*) = 1
) cc ON m.MovieID = cc.MovieID
WHERE m.categoryID = 1
@Mudkip:在Postgres中也应该这样做——减去标识符的任意大小写。在不包含双引号的情况下,这些都被折叠成小写。
SELECT m.ID, m.Title
from Movies m
where m.categoryID = 1
and 1 = (select count(*)
from copies c
where c.MovieID = m.MovieID);