如何爲每個錶行分配t-sql
表達式? 例如:爲每一行分配值
Foreach user in Users
{
user.Place = SELECT COUNT(*) AS [value]
FROM [Users] AS [t0]
WHERE (COALESCE([t0].[Votes],@p0)) > @p1;
}
其中Users
是表。這是僞代碼,但我想在t-sql
存儲過程中這樣做。
如何爲每個錶行分配t-sql
表達式? 例如:爲每一行分配值
Foreach user in Users
{
user.Place = SELECT COUNT(*) AS [value]
FROM [Users] AS [t0]
WHERE (COALESCE([t0].[Votes],@p0)) > @p1;
}
其中Users
是表。這是僞代碼,但我想在t-sql
存儲過程中這樣做。
所以,你希望所有的用戶記錄,並與各記錄上數..
您可以使用子查詢 - 但是@ p0和@ p1是什麼?檢查這個
SELECT u.*, Place = (
SELECT COUNT(*) AS [value]
FROM [Users] AS [t0]
WHERE COALESCE([t0].[Votes],0) > u.Votes)
FROM Users u
從SQL Server 2005 +,你可以使用窗口函數
SELECT u.*, Place = Rank() over (order by u.Votes)
FROM Users u
難道這就是你的意思是:
UPDATE Users
SET Place = (
SELECT COUNT(*)
FROM Users
WHERE COALESCE(Votes, @p0) > @p1
)
?
你是什麼意思的「分配sql表達式」?你想在SQL中執行此操作嗎? – 2011-03-17 06:27:05
您能否再詳細解釋表格結構,以及@ P0和@ P1參數的含義? – richardtallent 2011-03-17 06:27:21
@MikeEast是的,我想在SQL中做到這一點。我的意思是隻分配給SQL查詢的行列結果。 – Neir0 2011-03-17 06:34:01