如何为每个表行分配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