当我尝试使用 ROW_NUMBER() 时出现错误,为啥?
Posted
技术标签:
【中文标题】当我尝试使用 ROW_NUMBER() 时出现错误,为啥?【英文标题】:I get an error when I try to use ROW_NUMBER(), why?当我尝试使用 ROW_NUMBER() 时出现错误,为什么? 【发布时间】:2020-05-13 09:33:43 【问题描述】:我正在尝试写这样的东西:
string AT2 = string.Format("UPDATE User_Info SET Admin = 1 WHERE (Row_Number = N'1'+N'0')", x, 1);
上面还有这个:
string cmdStr = "SELECT Firstname, Lastname, Username, Password, Email, Phone, Admin, id, ROW_NUMBER() as 'Row_Number' FROM User_Info";
我收到此错误:
函数“ROW_NUMBER”必须有一个 OVER 子句。
有人知道为什么吗?所以我需要在我的表中添加一些东西..?还是换个方式写?
我的桌子:
CREATE TABLE [dbo].[User_Info]
(
[Username] NVARCHAR (50) NOT NULL,
[Password] NVARCHAR (50) NOT NULL,
[Firstname] NVARCHAR (50) NOT NULL,
[Lastname] NVARCHAR (50) NOT NULL,
[Email] NVARCHAR (50) NOT NULL,
[Country] NVARCHAR (50) NOT NULL,
[Phone] NVARCHAR (50) NOT NULL,
[Gender] NVARCHAR (50) NOT NULL,
[Admin] INT NULL,
[id] INT IDENTITY (1, 1) NOT NULL,
PRIMARY KEY CLUSTERED ([Username] ASC)
);
【问题讨论】:
您的数据库是什么?你认为row_number
是什么?
我认为它像.Rows[x]
样本数据、期望的结果和对逻辑的解释会有所帮助。显然,您的代码没有名为row_number
的列。但除此之外,还不清楚您要做什么。
我的网站上有一个管理页面。我希望更新按钮将对每个检查的用户运行查询并将其 Admin
值更改为 1
【参考方案1】:
string cmdStr = "SELECT Firstname, Lastname, Username, Password, Email, Phone, Admin, id, ROW_NUMBER() OVER (ORDER BY Firstname) FROM User_Info";
您缺少ROW_NUMBER() OVER (ORDER BY Firstname)
OVER() 子句。
如果您想按 id 进行排序,请将其用作 ROW_NUMBER() OVER (ORDER BY Id
),这样行将随着 Id 升序而增加,对于您希望作为 ROW_NUMBER
子句基础的任何行,行都会增加。
所以更新语句可能是这样的。
UPDATE User_Info SET Admin = 1 WHERE id=
(SELECT ID FROM (
(SELECT Firstname, Lastname, Username, Password, Email, Phone, Admin, id, ROW_NUMBER() OVER (ORDER BY Firstname) ROWNUMBER FROM User_Info)) b WHERE b.ROWNUMBER=N'1'+N'0')
【讨论】:
so.. 我更新了 cmdStr,我更新了 AT2,所以它的string AT2 = string.Format("UPDATE User_Info SET Admin = 1 WHERE (ROW_NUMBER() = N'1'+N'0')", x, 1);
我仍然得到同样的错误
在sqlserver中搜索窗口函数
我现在明白了一点,但这并没有帮助 - 因为我好像有一个子句 (order by
),它仍然告诉我必须添加一个子句
更新时您现在需要使用数据库列,例如“ID”,您不使用 ROW_NUMBER 列。我希望我能把你弄好
所以我不能使用像Username
这样的列?哦,如果我使用id
- 它必须是主键吗?以上是关于当我尝试使用 ROW_NUMBER() 时出现错误,为啥?的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试使用 symfony 创建实体时出现 Aborted 错误消息 [重复]
当我尝试安装 @nuxtjs/firebase 时出现 NPM 错误