我正在尝试在第一个空列处添加值。这是我的代码 -
SqlCommand cmd = my_con.CreateCommand();
cmd.CommandText = "insert into Contents(General_Exam) values(@CC)";
cmd.Parameters.AddWithValue("@CC", txtAddOption.Text);
cmd.ExecuteNonQuery();
comboBoxAddOption.Items.Add(txtAddOption.Text);
SqlCommand cmd1 = new SqlCommand("update TOP(1) Contents SET General_Exam=@CC where General_Exam IS NULL", my_con);
cmd1.Parameters.AddWithValue("@CC", txtAddOption.Text);
cmd1.ExecuteNonQuery();
但是当我插入值时,它不插入第一个空行而不是插入到最后一个空行。我认为这是因为Top(1)占据了最高行。但我想插入第一个空行中一个人知道我怎么能这样做请告诉我!提前致谢。
答案 0 :(得分:1)
使用UPDATE TOP 1
几乎肯定是一个错误。如果您需要做类似的事情,那么您的设计就会出现问题。同样重要的是要注意 - TOP x
没有ORDER BY
子句永远不会发生。如果您发现自己这样做,那么您应该回头看看您在逻辑和/或设计中犯了哪些错误。
您的表应该有一个主键,您应该根据它进行更新,而不是基于某些(目前)数据的排序。
答案 1 :(得分:0)
该主题讨论使用公共表表达式来控制使用order by
的{{1}}中的update
:
how can I Update top 100 records in sql server
这里也讨论过:
top
注意:希望您可以使用;WITH CTE AS
(
SELECT TOP 1 *
FROM Contents
WHERE General_Exam IS NULL
ORDER BY [Chife Complains] DESC
)
UPDATE CTE SET General_Exam=@CC
找到更好的选择。 (您可能会同样使用该显示器)