删除具有特定列的最高值的行

Raz*_*ton 2 c# sql sql-server sql-delete

我想删除特定列上具有最高值的行

(我知道有答案,但由于某些原因它们都不适用于我)

我在Visual Studio c#中使用SQL进行的所有编码

我的数据库:小时

Hours_Left | Hours_Spent | Time_Written | Mode | Time_Start | Time_End | Index
==============================================================================
aa         | bb          | cc           | dd   | ee         | ff       | 3
gg         | hh          | ii           | jj   | kk         | ll       | 4
mm         | nn          | oo           | pp   | qq         | rr       | 5
ss         | tt          | uu           | vv   | ww         | xx       | 6

[Hours_Left]   VARCHAR (MAX) NULL,
[Hours_Spent]  VARCHAR (MAX) NULL,
[Time_Written] VARCHAR (MAX) NULL,
[Mode]         VARCHAR (MAX) NULL,
[Time_Start]   VARCHAR (MAX) NULL,
[Time_End]     VARCHAR (MAX) NULL,
[Index]        INT           IDENTITY (1, 1) NOT NULL
Run Code Online (Sandbox Code Playgroud)

我的代码:

if (con.State != ConnectionState.Open)
        {
            con.Close();
            con.Open();
        }
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = @"DELETE FROM hours WHERE Index = select max(Index) from hours limit 1";
        cmd.ExecuteNonQuery();
        con.Close();
        Display_Data();
Run Code Online (Sandbox Code Playgroud)

什么时候commandText都不要工作

@"DELETE TOP(1) FROM hours
  WHERE Index in 
  (SELECT TOP(1) Index FROM hours
  ORDER BY Index DESC);";
Run Code Online (Sandbox Code Playgroud)

我想删除最高索引的整行 - 即删除索引为6的行,它是最高索引

错误在:

cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

错误是:

System.Data.SqlClient.SqlException:'索引'附近的语法不正确.如果这是作为表提示的一部分,则现在需要A WITH关键字和括号.有关正确的语法,请参阅SQL Server联机丛书.

ajg*_*ajg 6

索引是一个关键字,需要使用[Index].