SQL子查询错误,返回了多个值

SQL子查询错误,返回了多个值,sql,subquery,Sql,Subquery,我试图编写一个查询,但不知道为什么会出现这样的错误: 子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时 SELECT CAST(Title AS CHAR(30)) AS 'Title' , CAST(Content AS CHAR(70)) AS 'Content' , PostedDate AS 'Date' , CAST( ISNULL( (SELECT Upvote FROM Ratings

我试图编写一个查询,但不知道为什么会出现这样的错误:

子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时

SELECT CAST(Title AS CHAR(30)) AS 'Title'
     , CAST(Content AS CHAR(70)) AS 'Content'
     , PostedDate AS 'Date'
     , CAST( ISNULL(
        (SELECT Upvote
        FROM Ratings
        WHERE Ratings.FK_PostID = Posts.PostID)
        , 0) AS CHAR(10) ) AS 'Upvotes' 
FROM Posts
;
您可能想要计算或求和这些值。如果是:

SELECT p.Title, p.Content, p.PostedDate AS Date,
       (SELECT SUM(r.Upvote)
        FROM Ratings r
        WHERE r.FK_PostID = p.PostID
       ) as Upvotes
FROM Posts p;
注:

SUMr.upvote可能不是正确的逻辑。也许你想要COUNT*或类似的东西。 我看不出有什么理由把这些列转换成字符串。 仅对字符串和日期常量使用单引号。 您可能想要计算或求和这些值。如果是:

SELECT p.Title, p.Content, p.PostedDate AS Date,
       (SELECT SUM(r.Upvote)
        FROM Ratings r
        WHERE r.FK_PostID = p.PostID
       ) as Upvotes
FROM Posts p;
注:

SUMr.upvote可能不是正确的逻辑。也许你想要COUNT*或类似的东西。 我看不出有什么理由把这些列转换成字符串。 仅对字符串和日期常量使用单引号。
我假设你想得到每个帖子的投票数?为什么不直接使用连接:

SELECT p.Title,  p.Content, p.PostedDate AS 'Date', COUNT(r.Upvote) AS 'Upvotes'
                         FROM Posts p
                         LEFT JOIN Ratings r ON r.FK_PostID = p.PostID
                         GROUP BY p.PostID, p.Title ORDER BY p.PostID ASC

我假设你想得到每个帖子的投票数?为什么不直接使用连接:

SELECT p.Title,  p.Content, p.PostedDate AS 'Date', COUNT(r.Upvote) AS 'Upvotes'
                         FROM Posts p
                         LEFT JOIN Ratings r ON r.FK_PostID = p.PostID
                         GROUP BY p.PostID, p.Title ORDER BY p.PostID ASC

错误似乎很明显。你不明白哪一部分?错误似乎很清楚。你不明白哪一部分?