我想刪除特定列最高值的行的特定列的最高值刪除一行
(我知道,有針對的答案,但他們沒有爲我的工作因爲某種原因)
所有編碼我在Visual Studio C#做SQL
MyDatabase的:小時
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
我的代碼:
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();
不工作,要麼當commandText
是
@"DELETE TOP(1) FROM hours
WHERE Index in
(SELECT TOP(1) Index FROM hours
ORDER BY Index DESC);";
我想刪除指數最高的整排 - 即刪除該行與索引6,這是最高的指數
錯誤在:
cmd.ExecuteNonQuery();
錯誤是:
System.Data.SqlClient.SqlException:'Index'附近語法不正確。如果 這是打算作爲表提示的一部分,現在需要WITH關鍵字和 括號。有關正確的 語法,請參閱SQL Server聯機叢書。
'DELETE FROM小時WHERE [索引] IN(選擇MAX([索引] )從幾小時)' –
它通用的名稱索引像'%TableName%Id'。在你的情況下,它將是'HourId'。因此你將來會避免這些問題。 –
沒有問題,但爲什麼所有其他列varchar(max)? –