我有一个查询,返回一堆行。 但使用相同的查询我想:SQL在现有查询中获取单个值?
1.获得总行数表中的
2.获得其中certian用户名位于
眼下IM行号这样做:
BEGIN
DECLARE @startRowIndex INT;
DECLARE @PageIndex INT;
DECLARE @RowsPerPage INT;
SET @PageIndex = 0;
SET @RowsPerPage = 15;
SET @startRowIndex = (@PageIndex * @RowsPerPage) + 1;
WITH messageentries
AS (SELECT Row_number()
OVER(ORDER BY score DESC) AS row,
Count(DISTINCT town.townid) AS towns,
user_details.username,
user_score.score,
allience.alliencename,
allience.allienceid,
allience.alliencetagname,
(SELECT Count(*) FROM user_details) AS numberofrows
FROM user_details
INNER JOIN user_score
ON user_details.username = user_score.username
INNER JOIN town
ON user_details.username = town.townownername
LEFT OUTER JOIN allience_roles
ON user_details.useralliencerole = allience_roles.roleid
LEFT OUTER JOIN allience
ON allience_roles.allienceid = allience.allienceid
GROUP BY user_details.username,
user_score.score,
allience.alliencename,
allience.allienceid,
allience.alliencetagname)
SELECT *, (SELECT row FROM messageentries WHERE username = 'myUsername') AS myself
FROM messageentries
WHERE row BETWEEN @startRowIndex AND @StartRowIndex + @RowsPerPage - 1
END
这是行得通的,但不是两个嵌套的选择将运行一次表中的每一行? :/
...
(SELECT Count(*) FROM user_details) AS numberofrows
...
(SELECT row FROM messageentries WHERE username = 'myUsername') AS myself
所以我的问题是我怎样才能得到我想要的价值尽可能“低成本”,最好在同一个查询?
感谢提前:)
Yay,它的工作,但不知何故,如果我写SELECT *,MyRowNumber.row作为我自己,我得到两列具有相同的值,解决方案是不选择MyRowNumber ..如何获取查询的值我不知道,但它的工作:) – Moulde 2009-07-27 13:08:26