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
错误似乎很明显。你不明白哪一部分?错误似乎很清楚。你不明白哪一部分?