SQLite 选择列中具有 NULL 的第一行并将该列更改为不同的值

SQLite Selecting the first row who has a NULL in a column and changing that column to a different value

你好,我有一个有点独特的问题,我需要 select Status 列中具有 NULL 的第一行,并将其值更改为文本(处理中)

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

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

此外,我不想 select 任何在 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 值。只有第一个。

您需要在 UPDATE 语句中使用 WHERE 子句:

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

如果你也想要这个条件:

Also I don't want to select any row that also has NULL in the URL column.

然后:

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)