我有sql server表,带有架构
m_id ,
u_id ,
error ,
status_1 ,
status_2
目前,我正在使用查询一次更新所有行。
update [table_1]
set status_1 = GETUTCDATE()
where [m_id] % 2 != 0;
此查询使用m_id % 2 != 0
更新所有行。
但不是这样,我想一次更新一行,也许使用C#循环。 请提出建议。
答案 0 :(得分:1)
这是你可以做的,
string cmdString = "select m_id from table_1");
SqlCommand command = new SqlCommand(cmdString, conn);
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var m_Id = reader["m_id"];
if (macId != DBNull.Value)
{
cmdString =
"update table_1 set last_status_update = GETUTCDATE() where [m_id] % 2 != 0 AND [m_id] ='" + m_Id + "';"
command = new SqlCommand(cmdString, conn);
command.ExecuteNonQuery();
}
}
}
答案 1 :(得分:0)
像
这样的东西Update [table_1]
set status_1 = GETUTCDATE()
Where [m_id] = (select top 1 m_id from table_1 order. by status_1 desc)
每次执行时都应该执行一条记录。不知道为什么你会想要...而且显然只有少数才有用。否则在tsql循环中执行它
答案 2 :(得分:0)
DECLARE @date DATETIME = GETUTCDATE()
WHILE (1=1) DO
BEGIN
;WITH s_cte AS (
SELECT TOP 1 status_1 FROM table_1 WHERE [m_id] % 2 != 0 AND status_1 != @date
)
UPDATE s_cte SET status_1 = @date
IF @@ROWCOUNT = 0 BREAK
END