Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何引用多个列';子查询中的值?_Sql_Postgresql_Sql Server 2012 - Fatal编程技术网

Sql 如何引用多个列';子查询中的值?

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行 在“,”附近预期条件的上下文中指定的非布尔型表

我已尝试在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行 在“,”附近预期条件的上下文中指定的非布尔型表达式*


我知道这个查询在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);