2013-07-07 188 views
0

我目前有一个问题,我无法弄清楚SQL Server。SQL Server:声明导致查询问题

错误是:

该分配一个值给变量A SELECT语句不能与数据检索操作

组合

SQL:

DECLARE @IdUser INT 

Select 
    @IdUser = Id, 
    Username, 
    (Select Count(*) From GagsLikes where Userid = @IdUser And Good = 1) as GagLikes, 
    (Select Count(*) From GagsViews where UserID = @IdUser), 
    (Select Count(*) From Gags Where UserID = @IdUser) as GagViews 
From 
    Users 
Order by 
    GagLikes, GagViews 

由于在提前!

+3

正如它说的,你可能不会把这个@IdUser = Id和你选择的其余部分结合起来。 – TGlatzer

+2

你甚至想在这里做什么?你没有where子句,而且我假设你有多个用户..那么你期望分配给'@ IdUser'的值是多少? – Blorgbeard

+0

@Blorgbeard,它显示所有用户的一些信息。除了子查询之外,一切正常。 – Jamie

回答

2

因为你这样做试试这个你可能不使用该变量:

Select 
    U.Id, 
    U.Username, 
    (Select Count(*) From GagsLikes where Userid = U.Id And Good = 1) as GagLikes, 
    (Select Count(*) From GagsViews where UserID = U.Id), 
    (Select Count(*) From Gags Where UserID = U.Id) as GagViews 
From 
    Users AS U 
Order by 
    GagLikes, GagViews 
+0

谢谢,这对我有用! – Jamie

1

你的表可能会返回一个以上行。确保你的表只返回一行,否则它可以将多个id存储到一个int变量中。