比如,你可以做分組的一點點:
SELECT MAX(WinningAnswers) AS 'WinningAnswers', MAX(TotalAnswers) AS 'TotalAnswers'
FROM (
SELECT t.UsersID, COUNT(t.WiningComment) AS 'WinningAnswers', 0 AS 'TotalAnswers'
FROM Threads t
JOIN Comments c ON c.CommentsID = t.WiningComment
WHERE t.UsersID = @UserID
UNION ALL
SELECT UsersID, 0 AS 'WinningAnswers', COUNT(CommentsID) AS 'TotalAnswers'
FROM Comments
WHERE UsersID = @UserID
) AS Total
GROUP BY UsersID;
或者,考慮到您的第二個查詢只返回一條記錄,您可以簡單地:
SELECT COUNT(t.WiningComment) AS 'WinningAnswers', Total.TotalAnswers AS 'TotalAnswers'
FROM (
SELECT COUNT(CommentsID) AS 'TotalAnswers'
FROM Comments
WHERE UsersID = @UserID
) AS Total, Threads t
JOIN Comments c ON c.CommentsID = t.WiningComment
WHERE t.UsersID = @UserID;
是的 - 這就是'UNION'所做的 - 根據定義。如果你想要一個單行,兩列,你需要有一個單一的'SELECT'與兩個subselects .. –