我正在尝试写这样的东西:
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)
);
答案 0 :(得分:2)
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}')