首页 > 解决方案 > SQLite 选择列中具有 NULL 的第一行并将该列更改为不同的值

问题描述

您好我有一个有点独特的问题我需要选择状态列中具有 NULL 的第一行并将其值更改为文本(处理)

为了澄清,我将在需要处理数据库条目的程序中使用 SQLite。这些列是 URL 名称状态

名称和 URL 不是我可以控制的。状态列用于程序所有新条目都带有 NULL 值我需要用文本(处理)标记第一个条目,然后程序将引用状态中值为(处理)的行列,完成后将其更改为 [FINISHED]

此外,我不想选择在 URL 列中也有 NULL 的任何行。

我试过这段代码只是它没有让我到任何地方

SELECT * FROM List WHERE Status IS NULL ORDER BY ROWID ASC LIMIT 1
update List set Status = replace ( Status, NULL ,'(processing)')
commit;

我绝对不想做的是同时更改列 Status 中的所有 NULL 值。只有第一个。

标签: sqlsqlitesql-updaterowid

解决方案


您需要WHERE在语句中添加一个子句UPDATE

UPDATE List 
SET Status = '(processing)'
WHERE rowid = (SELECT MIN(rowid) FROM List WHERE Status IS NULL)

如果你也想要这个条件:

此外,我不想选择在 URL 列中也有 NULL 的任何行。

然后:

UPDATE List 
SET Status = '(processing)'
WHERE rowid = (SELECT MIN(rowid) FROM List WHERE Status IS NULL)
  AND URL IS NOT NULL

或者:

UPDATE List 
SET Status = '(processing)'
WHERE rowid = (SELECT MIN(rowid) FROM List WHERE Status IS NULL AND URL IS NOT NULL)
  

推荐阅读